我已经发布了一个类似的问题(NSIS - check if registry key value exists),这个问题的解决方案运作得很好:
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" "NUL:"
然后:
${If} ${Errors}
#and so on
我在脚本中再做三次同样的事情,读取不同的注册表值和所有尝试但最后一次成功:
ReadRegStr $3 HKLM "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\SomePrinter" "Name"
这总是会返回错误。
我应该采取哪些不同的方式?
我第一次读取注册表值时,使用$0
来存储返回值。然后是第二次$1
,然后是$2
和$3
。
正如我所说的,除了最后一项之外的所有工作。是否与我阅读的注册表项类型有关,还是应该使用不同的变量作为返回值?我尝试了其他变量,但到目前为止还没有任何效果。
感谢您的帮助和提示!
答案 0 :(得分:2)
的问题
ReadRegStr $3 HKLM "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\SomePrinter" "Name"
是指定根两次:
HKLM
HKEY_LOCAL_MACHINE\...
从子键名称中删除HKEY_LOCAL_MACHINE
,它应该没问题。如果您需要访问注册表的其他部分,请按WriteRegExpandStr
manual section中所述更改ReadRegStr
的2参数:
HKCR
HKEY_CLASSES_ROOT
{li> HKLM
HKEY_LOCAL_MACHINE
{li> HKCU
HKEY_CURRENT_USER
{li> HKU
HKEY_USERS
{li> HKCC
HKEY_CURRENT_CONFIG
{li> HKDD
HKEY_DYN_DATA
{li> HKPD
HKEY_PERFORMANCE_DATA
{li> SHCTX
SHELL_CONTEXT