REG添加REG_MULTI_SZ多行注册表值

Edw*_*Lee 3 windows registry command-line

要添加REG_MULTI_SZ多行注册表值,我可以这样做

reg.exe ADD "HKLM\path\to\registry\key" /v RegistryValue /t REG_MULTI_SZ /d "abc\0def\0"
Run Code Online (Sandbox Code Playgroud)

这将添加("abc","def").

但是如果我需要添加("abc","","def"),即两者之间的空项呢?

reg.exe ADD "HKLM\path\to\registry\key" /v RegistryValue /t REG_MULTI_SZ /d "abc\0\0def\0"
Run Code Online (Sandbox Code Playgroud)

给我一个"无效参数"错误.

小智 10

这对我有用:

REG ADD "HKLM\LOCATION" /v "Value" /t REG_MULTI_SZ /d item1\0item2 /f
Run Code Online (Sandbox Code Playgroud)

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

REG ADD "HKLM\LOCATION" /v "Value" /t REG_MULTI_SZ /d "item1"\0"item2" /f
Run Code Online (Sandbox Code Playgroud)

确保你没有两个尾随的"\ 0"分隔符(一个是好的,有或没有尾随\ 0你将获得你的最后一个返回字符),如下例所示(就像我在TechNet文章中看到的那样),或者你将得到"错误:为'/ d'指定的无效值.":

REG ADD "HKLM\LOCATION" /v "Value" /t REG_MULTI_SZ /d item1\0item2\0\0 /f
Run Code Online (Sandbox Code Playgroud)


Har*_*ton 5

使用reg add可能无法实现,因为您尝试设置的数据格式不正确。REG_MULTI_SZ值以空字符串结尾,因此不允许将空字符串作为值的一部分。

如果确实需要,并且了解某些软件将无法正确读取密钥,则可以改用reg import。例如,以下文件创建一个值,中间带有一个空字符串:

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
Run Code Online (Sandbox Code Playgroud)