REG添加一个REG_MULTI_SZ多行registry值

要添加一个REG_MULTI_SZ多行registry值,我可以做

reg.exe ADD "HKLM\path\to\registry\key" /v RegistryValue /t REG_MULTI_SZ /d "abc\0def\0" 

这将添加(“abc”,“def”)。

但是如果我需要添加(“abc”,“”,“def”),也就是两者之间的空白项呢?

 reg.exe ADD "HKLM\path\to\registry\key" /v RegistryValue /t REG_MULTI_SZ /d "abc\0\0def\0" 

给我一个“无效参数”的错误。

这可能是不可能使用reg add,因为你试图设置的数据是不正确的。 REG_MULTI_SZ值由一个空字符串结束 ,所以不允许有空字符串作为值的一部分。

如果你真的需要,并且了解到某些软件将无法正确读取密钥,则可以使用reg导入。 例如,以下文件在中间创建一个空字符串的值:

 Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\software\harrytest] "test"=hex(7):76,00,61,00,6c,00,75,00,65,00,31,00,00,00,76,00,61,00,6c,00,75,\ 00,65,00,32,00,00,00,00,00,76,00,61,00,6c,00,75,00,65,00,34,00,00,00,76,00,\ 61,00,6c,00,75,00,65,00,35,00,00,00,00,00 

这对我工作:

 REG ADD "HKLM\LOCATION" /v "Value" /t REG_MULTI_SZ /d item1\0item2 /f 

或者如果您的项目有空白:

 REG ADD "HKLM\LOCATION" /v "Value" /t REG_MULTI_SZ /d "item1"\0"item2" /f 

确保你没有两个尾随的“\ 0”分隔符(一个是OK的,有或没有尾随\ 0你会得到你最后的返回字符)像下面的例子(就像我在TechNet文章中看到的),或者你会得到一个“错误:为'/ d'指定的无效值。”:

 REG ADD "HKLM\LOCATION" /v "Value" /t REG_MULTI_SZ /d item1\0item2\0\0 /f 

尝试这个:

 @reg.exe add "HKCU\Software\Wirkomatron" /v "MySoftware" /d "Software1"\0"Software2"\0"Software3"\0 /t REG_MULTI_SZ /f 

而现在你可以用批处理脚本来做到这一点。

仅供参考。

如果你只是想插入一个新的行,那么你需要用空行来模拟它。 如果这个空间会对你所要达到的目标产生不利的影响,那么这个帖子对你来说是没用的。

reg.exe ADD "HKLM\path\to\registry\key" /v RegistryValue /t REG_MULTI_SZ /d "abc\0 \0def\0"