注册表管理(本地、远程)
查看项目属性:
Get-ItemProperty C:\Windows
查看注册表项:
Get-Item -path registry::HKLM\SYSTEM\CurrentControlSet\Control\CrashControl
Get-Item -path HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl
查看注册表键值:
$CrashControl = Get-ItemProperty -path HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl
$CrashControl.DumpFile
修改注册表键值:
Set-ItemProperty -path HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl -Name CrashDumpEnabled -Value 1
新建注册表键值:
New-ItemProperty -path HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl -Name IgnorePagefileSize -PropertyType DWord -Value 1
通过将 Force 参数添加到任何 New-ItemProperty 命令,也可以覆盖预先存在的注册表条目值
PropertyType 值 含义
Binary 二进制数据
DWord 一个有效的 UInt32 数字
ExpandString 一个可以包含动态扩展的环境变量的字符串
MultiString 多行字符串
String 任何字符串值
QWord 8 字节二进制数据
删除注册表键值:
若要同时删除 PSHome 和 PowerShellPath 注册表条目,请使用 Remove-ItemProperty:
Remove-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PSHome
Remove-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath
清空注册表的值:
Clear-Item -Path HKLM:SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run\PS
Clear-ItemProperty -Path HKLM:SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run -Name "VS2010" –PassThru
============================================================================
远程注册表管理
$MachineName = 'win2008'
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $MachineName)
#$true以编辑模式打开注册表键,不带$true则以只读模式打开
#$regKey = $reg.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", $true)
$regKey2 = $reg.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
$j=$regkey2.GetSubKeyNames()
foreach ($w in $j)
{
$regKey3 = $reg.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$w")
$regkey3.getvalue("displayname") + $regkey3.getvalue("displayversion")
}
#$regkey.GetValueNames() #获取键值名称
#$regKey.CreateSubKey("VS2010") #新建子键
#远程修改注册表需要将远程计算机上的【Remote Registry】服务启动,否则会遇到错误
========================================================================
本地注册表管理
get-item HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*
HKCU
[microsoft.win32.registry]::setvalue("HKEY_LOCAL_MACHINE\SOFTWARE\mysoftware","test","1""Dword")
判断注册表键值是否存在:
Get-ItemProperty hklm:\software\microsoft\windows\currentversion\run |Select-String "backinfo" -Quiet
#需要注意如果有诸如 "backinfo123"和“backinfo”的键值同时存在则无法判断正确,所以还是使用如下方法:
$MachineName = hostname
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $MachineName)
$regkey_backinfo = $reg.OpenSubKey("software\microsoft\windows\currentversion\run")
$backinfovalue = $regkey_backinfo.GetValue("BackInfo")
If ($backinfovalue -ne $null) #判断该键值是否为空
{
$backinfokind = $regkey_backinfo.GetValueKind("BackInfo")
If ($backinfovalue -eq "C:\Windows\Bi\Bi.exe" -and $backinfokind -eq "String")
{"Bi工具已安装成功"|Out-File $resultlog -Append}
Else {"Error: Bi工具未安装,请进行安装"|Out-File $resultlog -Append}
}
==============
判断注册表项是否存在:
Test-Path -path hklm:\software\microsoft\windows\currentversion\run
新建注册表项:
md hklm:\software\mysoftware
new-item -path hklm:\software -name mysoftware
新建注册表键值:
New-ItemProperty -path hklm:\software\microsoft\windows\currentversion\run -name backinfo3 -propertytype string -value c:\windows\binfo.exe
修改注册表键值:
set-itemproperty -path hklm:\software\mysoftware -name test1 -value 2
删除键值:
remove-itemproperty -path hklm:\software\mysoftware -name test1
删除KEY:
remove-item -path hklm:\software\mysoftware
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?