使用REG ADD命令操作含空格路径时出现语法错误如何解决
问题根因
REG ADD 命令默认以空格作为参数分隔标记,你使用的注册表路径中Windows NT字段包含空格,会被命令解析器拆分为两个独立参数,直接触发Syntax Error语法报错。
解决方案
给包含空格的完整注册表路径外层包裹英文半角双引号,即可让解析器将引号内的内容识别为单个完整路径参数。
修正后的代码实现如下:
system(("REG ADD \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\" /v ProductId /t REG_SZ /d " + uuid + " /f").c_str());
额外注意事项
- 包裹路径的双引号必须是英文半角符号,使用中文全角引号会触发新的命令错误
- 如果后续写入的
uuid参数值本身包含空格,也需要给/d对应的取值部分同样包裹双引号,写法参考:/d \"" + uuid + "\" - 操作
HKLM根键下的注册表项需要程序持有管理员权限,这类权限报错和空格导致的语法报错要注意区分排查
内容的提问来源于stack exchange,提问作者Jens Schulze
相关产品推荐
相关产品推荐

