You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell设置注册表键值时出现原有键被意外覆盖问题

PowerShell设置注册表值旧值意外消失问题解决方案

根因分析

  • 首要原因是注册表路径未显式指定注册表提供器前缀,PowerShell路径解析异常,可能出现操作节点偏移、逻辑错误等问题
  • 64位操作系统中若使用32位PowerShell执行脚本,操作HKEY_LOCAL_MACHINE\SOFTWARE路径会自动重定向到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\下,可能出现两次操作实际写入不同节点的情况
  • QualysAgent运行时会自动校验自身关联注册表项配置,非预期的新增值会被服务主动清理,也会导致旧值看似被覆盖消失

修复操作步骤

1. 修正注册表路径与命令参数

显式添加注册表提供器前缀Registry::,同时指定值类型避免自动推断异常,修正后脚本如下:

# 显式指定注册表提供器前缀,避免路径解析错误
$registryKey = "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Qualys\QualysAgent\ScanOnDemand\Vulnerability"
$valuedata = '1'

# 第一次设置Scanondemand值
$valuename = "Scanondemand"
Set-ItemProperty -Path $registryKey -Name $valuename -Value $valuedata -Type DWord

# 第二次设置ScanOnstartup值
$valuename = 'ScanOnstartup'
Set-ItemProperty -Path $registryKey -Name $valuename -Value $valuedata -Type DWord

注:Set-ItemProperty本身逻辑为「值不存在则新增,存在则修改」,正常不会删除同路径下其他无关值

2. 适配64位系统运行环境

如果是64位操作系统,需要操作原生64位注册表路径时,请运行C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe(64位PowerShell)执行脚本,不要使用SysWOW64目录下的32位PowerShell。

3. 操作前暂停QualysAgent服务

避免QualysAgent主动清理自定义注册表值,修改前先停止服务:
Stop-Service QualysAgent -Force
修改完成验证无误后再启动服务:
Start-Service QualysAgent

4. 结果校验

设置完成后执行以下命令,确认两个值均已正确写入:
Get-ItemProperty -Path $registryKey | Select-Object Scanondemand, ScanOnstartup

内容的提问来源于stack exchange,提问作者timmyver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:06:03