使用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