在 NSIS 中正确调用 WriteRegMultiStr
Calling WriteRegMultiStr in NSIS properly
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
值,我只找到了使用 registry-NSIS 插件的指令。但是功能是有的,怎么用呢?
附录:
将字符串编码为十六进制并使用不带引号的 ot 传递它也不会产生理想的结果。
其实我是在网上深入挖掘后才找到答案的。由于我认为这个问题在 Whosebug 上没有得到解答,我将在这里留下回复,以防有人想使用此功能。
开篇描述的命令结构post基本正确,但值必须精确编码。我的命令如下所示:
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 Version 5.0 格式,而不是 REGEDIT4 格式。可以使用转换编辑器来实现这一点,我使用了 OTConvertIt。
假设您 运行 NSIS 版本 3.02 或更高版本,那么脚本应该可以编译。
如您所见,值数据的格式必须与 Windows 2000+ 中的 .reg 文件的格式完全相同。
此指令以这种方式工作的原因是因为它实际上与 WriteRegBin
相同,并且添加了很少的代码来支持此新功能。
将来您可以删除 /REGEDIT5
开关并为其提供纯字符串,但尚未添加对此的支持。
Registry plug-in 确实允许您以理智的方式编写这些字符串。
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
值,我只找到了使用 registry-NSIS 插件的指令。但是功能是有的,怎么用呢?
附录:
将字符串编码为十六进制并使用不带引号的 ot 传递它也不会产生理想的结果。
其实我是在网上深入挖掘后才找到答案的。由于我认为这个问题在 Whosebug 上没有得到解答,我将在这里留下回复,以防有人想使用此功能。
开篇描述的命令结构post基本正确,但值必须精确编码。我的命令如下所示:
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 Version 5.0 格式,而不是 REGEDIT4 格式。可以使用转换编辑器来实现这一点,我使用了 OTConvertIt。
假设您 运行 NSIS 版本 3.02 或更高版本,那么脚本应该可以编译。
如您所见,值数据的格式必须与 Windows 2000+ 中的 .reg 文件的格式完全相同。
此指令以这种方式工作的原因是因为它实际上与 WriteRegBin
相同,并且添加了很少的代码来支持此新功能。
将来您可以删除 /REGEDIT5
开关并为其提供纯字符串,但尚未添加对此的支持。
Registry plug-in 确实允许您以理智的方式编写这些字符串。