首页 > 开发 > PowerShell > 正文

Powershell小技巧之获取注册表值的类型

2020-05-30 20:17:40
字体:
来源:转载
供稿:网友

当你不需要获取注册表数据类型而只要其值是非常简单的:你可以使用Get-ItemProperty:

代码如下:
Get-ItemProperty -Path HKLM:/SOFTWARE/Microsoft/Windows/CurrentVersion/Run

如果你需要获取数据类型,只需要多几个步骤:

代码如下:
$key = Get-Item -Path HKLM:/SOFTWARE/Microsoft/Windows/CurrentVersion/Run

$key.GetValueNames() |
  ForEach-Object {
    $ValueName = $_

    $rv = 1 | Select-Object -Property Name, Type, Value
    $rv.Name = $ValueName
    $rv.Type = $key.GetValueKind($ValueName)
    $rv.Value = $key.GetValue($ValueName)
    $rv
  }

访问注册表键值

在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的完整代码如下所示:

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表