Powershell注册表操作小结

Powershell可以使用文件操作API来操作注册表,注册表项就类似于Windows的文件夹。

如下是一个简单的示例:

上述例子就演示了利用cd指令(Set-Location)设置当前的注册表路径, 然后通过dir指令(Get-ChildItem)获取所有的子项。

注册表项API

在Powershell中,注册表项基本上和文件夹是对等的,可以使用文件夹操作相关API来操作注册表项。通常的操作有:

例如,我们可以用New-Item来创建一个注册表项。

New-ItemItem3

由于注册表的Item只有一个类型,因此无需像用New-Item创建文件夹那样要指定Type参数。

另外,mkdir这种直接创建文件夹的api对于创建注册表项也是有效的,非常方便。

注册表值API

注册表值并不是对应的文件的,而是ItemProperty。我们可以用ItemPropertyAPI就行注册表的值操作:

简单的示例如下:

Set-ItemProperty -Path  "."  -Name  "link"  -Type  "DWord"  -Value  23
Get-ItemPropertyValue -Path  "."  -Name  "link"
Rename-ItemProperty -Path  "."  -Name  "link"  -NewName  "link2"

我这里用的还是相对比完整的命令行,实际应用中可以简化一下,例如

Set-ItemProperty  "."   "link"   23
Rename-ItemProperty  "."   "link"   "link2"

默认值

对于Property的访问,需要传入Name作为参数的,但注册表项是有一个特殊的Name默认值的

对于这个值,我么可以用特殊的名称"(default)"来访问它。

Set-ItemProperty -Path "." -Name "(default)" -Type "DWord" -Value 23

对象访问

在程序中对于值的读写的时候,用Object访问更为方便些。

$a = Get-ItemProperty  "."
echo $a.link
$a.link = 

值类型

在注册表中,值有不同的类型,我们可以不指定类型,让它自动识别。

Set-ItemProperty  "."   "link"   "hello"
Set-ItemProperty  "."   "link"

同时,也可以主动指定Type类型:

Set-ItemProperty -Path  "."  -Name  "link"   -Type  "DWord"  -Value  23

注册表支持如下几种Type类型:

  • String:         REG_SZ.

  • ExpandString:     REG_EXPAND_SZ.

  • Binary:         REG_BINARY.

  • DWord:             REG_DWORD.

  • MultiString:     REG_MULTI_SZ.

  • Qword:          REG_QWORD.

  • Unknown:         REG_RESOURCE_LIST.

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章