在NSIS 3.02版本中,增加了WriteRegMultiStr
函数。在我的脚本中调用该函数时,脚本会引发错误:
Usage: WriteRegMultiStr /REGEDIT5 rootkey subkey entry_name hex_string_like_660000000000
root_key=(HKCR[32|64]|HKLM[32|64]|HKCU[32|64]|HKU|HKCC|HKDD|HKPD|SHCTX)
呼叫本身如下所示:
WriteRegMultiStr /REGEDIT5 HKLM "System\CurrentControlSet\Services\SomeService" "DependsOnService" "service1 service2"
由于以后没有添加有关此特定功能的文档,因此在WriteRegStr
和WriteRegDWORD
可用很久之后,我不得不怀疑-如何使用它?
到目前为止,相对于输入REG_MULTI_SZ
值,我仅发现使用注册表NSIS -plugin的指令。但是该功能存在,如何使用?
附录:
将字符串编码为十六进制,并在不带引号的情况下将其传递给ot,也不会产生预期的结果。
答案 0 :(得分:1)
您发现,值数据的格式必须与Windows 2000+中的.reg文件完全相同。
此指令如此工作的原因是,它实际上与WriteRegBin
相同,并且添加了很少的代码来支持此新功能。
将来,您也许可以放下/REGEDIT5
开关,并为其提供纯字符串,但尚未添加对此项的支持。
Registry plug-in确实允许您以理智的方式编写这些字符串。
答案 1 :(得分:0)
在深入浏览互联网后,我实际上能够找到答案。由于我认为在StackOverflow上尚未解决此问题,因此,如果有人要使用此功能,我将在此处留下答复。
开头文章中描述的命令结构基本上是正确的,但是必须精确编码该值。我的命令如下所示:
WriteRegMultiStr /REGEDIT5 HKLM "System\CurrentControlSet\Services\SomeService" "DependsOnService" 54,00,63,00,70,00,69,00,70,00,00,00,41,00,66,00,64
对于打算测试此字符串的任何人,这都是
Tcpip
Afd
以十六进制regedit格式编码。确切地说,这是Regedit版本5.0格式,而不是REGEDIT4格式。可以使用转换编辑器来实现这一点,我使用了OTConvertIt。
假设您运行的是NSIS 3.02或更高版本,然后应编译脚本。