使用PowerShell讀、寫、刪除注冊表鍵值


訪問注冊表鍵值

在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM