訪問注冊表鍵值
在PowerShell中,用戶可以通過類似於HKCU:(作為HKEY_CURRENT_USER)和HKLM:(代表HKEY_LOCAL_MATCHINE)的虛擬驅動器訪問注冊表鍵值。
如:Dir Registry::HKEY_LOCAL_MACHINE\Software
通過這種方式用戶可以很容易的復制、粘貼注冊表內的鍵值,用戶可以通過下面的命令獲取已經注冊的文件后綴:
dir Registry::HKEY_CLASSES_ROOT\.* -name | Sort-Object
讀取注冊表鍵值
在PowerShell中,用戶能夠以虛擬驅動器的形式來處理注冊表的內容
下面的Get-RegidtryValues函數列舉存儲在一個注冊表鍵值下的所有鍵值,完整代碼如下所示:
function Get-RegistryValues($key) {
(Get-Item $key).GetValueNames()
}
Get-RegistryValues HKLM:\Software\Microsoft\Windows\Currentversion
Get-RegistryValue讀取任意注冊表鍵值並返回其內容,完整代碼如下所示:
function Get-RegistryValue($key, $value) {
(Get-ItemProperty $key $value).$value
}
Get-RegistryValue ' HKLM:\Software\Microsoft\Windows\Currentversion' SM_GamesName
寫入注冊表鍵值
添加或修改注冊表鍵值在PowerShell中也是很方便的就可以完成的,下面創建名為Set-RegistryValue函數用來操作注冊表鍵值,以下是完整的代碼:
function Set-RegistryValue($key, $name, $value, $type="String") {
if ((Test-Path $key) -eq $false) { md $key | Out-Null }
Set-ItemProperty $key $name $value -type $type
}
Set-RegistryValue HKCU:\Software\TestABC myValue Hello
Set-RegistryValue HKCU:\Software\TestABC myValue 12 Dword
Set-RegistryValue HKCU:\Software\TestABC myValue ([Byte[]][Char[]]"Hello") Binary
移除注冊表鍵值
通過Remove-Item刪除目標注冊表鍵,函數Remove-RegistryKey的完整代碼如下所示:
function Remove-RegistryKey($key) {
Remove-Item $key -Force
}
通過Remove-ItemProperty函數刪除注冊表值,完整的代碼如下所示:
function Remove-RegistryValue($key, $value) {
Remove-ItemProperty $key $value
}
-------------powershell注冊表相關命令(可能不全)------------------
這些個命令的具體用法,請看手冊
get-childitem 即dir
new-item 新建(注冊表)目錄項
remove-item 刪除目錄項
rename-item 改名目錄項
copy-item 復制目錄樹
move-item 移動目錄樹
New-ItemProperty 新建某鍵,並賦值。即新建鍵值對
remove-itemproperty 刪除注冊表 某鍵值對
Copy-ItemProperty 把鍵和值,從某注冊表路徑復制到另一個。
Move-ItemProperty 移動鍵的位置,鍵值不變
Rename-ItemProperty 更改鍵名,鍵值不變
Clear-ItemProperty 清空某鍵的值,但鍵名不變
Get-ItemProperty 注冊表鍵值 -> powershell變量值 ,即讀取
set-itemproperty powershell變量值 -> 注冊表鍵值 ,即寫入
值的類型:
String=字符串
MultiString=多字符串
ExpandString=可擴充字符串
Binary=二進制值
DWord=32位值
QWord=64位值
get-acl 顯示注冊表某目錄的安全描述符
set-acl 更改注冊表項的安全描述符。
注意:此二條命令只對,注冊表目錄有效。無法在注冊表的鍵和值上設置權限。
-------------------------例子-------------------------
目的:
列表HKEY_CURRENT_USER
cd hkcu: 回車
dir 回車
目的:
建立一個鍵名為powershella,值為powershellb的鍵值對。類型為string
New-ItemProperty -path hkcu: -name powershella -value powershellb -PropertyType string
目的:
建立一個鍵名為powershellc,值為【空】的鍵。類型為string
New-ItemProperty -path hkcu: -name powershellc -value "" -PropertyType string
目的:
讀取powershella的值,進入變量$mmmm
$mmmm = (Get-ItemProperty -path hkcu: -name powershella).powershella
目的:
把注冊表 hkcu:powershella 的值,設置成變量$nnnn的值
$nnnn = "chuanjiaoshi"
set-ItemProperty -path hkcu: -name powershella -value $nnnn
目的:
獲取hkcu:\software目錄的權限
get-acl hkcu:\software
