约 2308 字

约 12 分钟

#注册表

注册表是 Windows 用于保存系统和应用程序配置的层次化数据库。PowerShell 通过 Registry 提供程序把注册表呈现为驱动器,默认提供 HKLM:(HKEY_LOCAL_MACHINE)和 HKCU:(HKEY_CURRENT_USER)。

#浏览注册表

> Get-ChildItem -Path HKLM:\SOFTWARE
> Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'

递归查看子项:

> Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft -Recurse

注册表项类似于目录,注册表值类似于项中的属性。

#读取注册表值

使用 Get-ItemProperty 读取某个项下的值:

> Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name ProductName

也可以先获取整个项,再访问属性:

> $info = Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
> $info.ProductName

#创建和修改注册表值

先创建注册表项(如果不存在):

> New-Item -Path 'HKCU:\Software\Demo' -Force

使用 New-ItemProperty 创建值:

> New-ItemProperty -Path 'HKCU:\Software\Demo' -Name Version -Value '1.0' -PropertyType String
> New-ItemProperty -Path 'HKCU:\Software\Demo' -Name Enabled -Value 1 -PropertyType DWord

使用 Set-ItemProperty 修改已有值:

> Set-ItemProperty -Path 'HKCU:\Software\Demo' -Name Version -Value '1.1'

常用 -PropertyType 值包括 String、ExpandString、Binary、DWord、MultiString 和 QWord。

#删除注册表值

> Remove-ItemProperty -Path 'HKCU:\Software\Demo' -Name Version

删除整个注册表项及其子项:

> Remove-Item -Path 'HKCU:\Software\Demo' -Recurse

操作前可以使用 -WhatIf 预览:

> Remove-Item -Path 'HKCU:\Software\Demo' -Recurse -WhatIf

#常见根键

驱动器对应注册表根键说明
HKLM:HKEY_LOCAL_MACHINE本机配置,修改通常需要管理员权限
HKCU:HKEY_CURRENT_USER当前用户配置

#注意事项

  • 修改 HKLM: 下的内容通常需要管理员权限。
  • 不同程序可能读取 32 位或 64 位注册表视图,跨位数访问时需注意重定向。
  • 脚本中应避免依赖具体路径或值,必要时先判断项和值是否存在。

#推荐阅读

更新: 2026/11/2

作者: planc

创建: 2026/11/2