在NSIS中正确调用WriteRegMultiStr
NSIS的3.02版增加了在NSIS中正确调用WriteRegMultiStr,nsis,Nsis,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/REGEDI
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
和writeregword
可用很久之后,没有关于此特定功能的文档添加,我不得不想知道-如何使用它
到目前为止,关于输入REG_MULTI_SZ
值,我只找到了使用注册表NSIS插件的指令。但是这个函数是存在的,那么如何使用它呢
增编:
将字符串编码为十六进制,并使用不带引号的ot传递,也不会产生理想的结果。我在互联网的深处挖掘后,实际上找到了答案。因为我认为StackOverflow上没有回答这个问题,所以我会在这里留下一个响应,以防有人想使用这个函数 开场白中描述的命令结构基本正确,但值必须精确编码。我的命令如下所示:
WriteRegMultiStr/REGEDIT5 HKLM“系统\CurrentControlSet\Services\SomeService”“依赖于服务”54,00,63,00,70,00,69,00,70,00,00,00,41,00,66,00,64
对于打算测试此字符串的任何人,这是
Tcpip
Afd
以十六进制regedit格式编码。这正是regeditVersion5.0格式,而不是REGEDIT4格式。一个转换编辑器可以用来实现这一点,我用的是OTConvertIt
然后,假设您运行NSIS 3.02版或更高版本,则应编译脚本。您发现,值数据的格式必须与Windows 2000+中的.reg文件完全相同 此指令以这种方式工作的原因是,它实际上与引擎盖下的
WriteRegBin
相同,并且只添加了很少的代码来支持此新功能
将来,您可能可以删除/REGEDIT5
开关并为其提供纯字符串,但尚未添加对该开关的支持
确实允许您以合理的方式编写这些字符串。您怎么能说没有文档?NSIS文档中有使用此指令的示例代码。啊,是的,我记得。使用较旧版本的NSIS尝试了该示例代码,导致该示例无法工作。不记得它在更新到3.04后存在。