代码改变世界

使用PowerShell读、写、删除注册表键值

2009-12-15 14:19  @天行健中国元素  阅读(674)  评论(0编辑  收藏  举报

访问注册表键值

在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
}

作者: 天行健
出处:http://fuhj02.cnblogs.com
版权:本文版权归作者和博客园共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任