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

NSIS调用PowerShell改注册表报错:找不到匹配的位置参数

解决方法

错误的核心原因是带空格的注册表路径被PowerShell拆分成了多个独立参数,导致Set-ItemProperty无法识别完整路径。以下是几种可行的修复方案:

方案1:用-Command包裹完整命令并正确转义引号

在NSIS脚本中,将PowerShell命令通过-Command参数传递,同时对路径的引号做转义处理:

ExecWait '"powershell.exe" -ExecutionPolicy Bypass -Command "Set-ItemProperty \"HKCU:\Control Panel\International\" -Name \"sDecimal\" -Value \".\""'

或者用单引号包裹路径(避免NSIS转义双引号的麻烦):

ExecWait '"powershell.exe" -ExecutionPolicy Bypass -Command "Set-ItemProperty ''HKCU:\Control Panel\International'' -Name ''sDecimal'' -Value ''."''"'

方案2:先在CMD中验证命令有效性

先在系统命令提示符中测试以下命令,确认能正常修改注册表:

powershell -ExecutionPolicy Bypass -Command "Set-ItemProperty 'HKCU:\Control Panel\International' -Name 'sDecimal' -Value '.'"

如果该命令能成功执行,再将其适配到NSIS中(重点处理引号转义)。

原理说明

原命令中,HKCU:\Control Panel\International里的空格没有被正确识别为路径的一部分,PowerShell会将其拆分为HKCU:\Control和Panel\International两个参数,而Set-ItemProperty的第一个参数需要完整的注册表路径,因此抛出“找不到接受该参数的位置参数”的错误。通过-Command包裹命令并正确转义引号,能让PowerShell将带空格的路径识别为单个完整参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:00:56