Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在NSIS中正确调用WriteRegMultiStr_Nsis - Fatal编程技术网

在NSIS中正确调用WriteRegMultiStr

在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

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
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后存在。