要添加一个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"