在 NSIS 中读取注册表项值失败

Reading registry key value in NSIS fails

我已经发布了一个类似的问题 (),并且该问题的解决方案非常有效:

ReadRegStr [=10=] HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" "NUL:"

然后:

${If} ${Errors}
#and so on

我在脚本中又做了三次同样的事情,读取了不同的注册表值,并且除了最后一次之外的所有尝试都成功了:

ReadRegStr  HKLM "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\SomePrinter" "Name"

这总是 return 一个错误。

我应该怎么做?

第一次读取注册表值时,我使用 [=13=] 来存储 return 值。然后第二次然后

就像我说的,除了最后一个,所有的工作。它与我正在阅读的注册表项的类型有关,还是我应该为 return 值使用不同的变量?我尝试了其他变量,但到目前为止没有任何效果。

感谢您的帮助和提示!

的问题
ReadRegStr  HKLM "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\SomePrinter" "Name"

是你指定了两次root:

  • HKLM
  • HKEY_LOCAL_MACHINE\...

把子键名的HKEY_LOCAL_MACHINE去掉就可以了。如果您需要访问注册表的另一部分,请按照 WriteRegExpandStr manual section:

中所述更改 ReadRegStr 的 2 参数
  • HKCR 对于 HKEY_CLASSES_ROOT
  • HKLM 对于 HKEY_LOCAL_MACHINE
  • HKCU 对于 HKEY_CURRENT_USER
  • HKU 对于 HKEY_USERS
  • HKCC 对于 HKEY_CURRENT_CONFIG
  • HKDD 对于 HKEY_DYN_DATA
  • HKPD 对于 HKEY_PERFORMANCE_DATA
  • SHCTX 对于 SHELL_CONTEXT