我已经发布了一个类似的问题(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
。
就像我说的,除了最后一个,一切都在工作。这是否与我正在读取的注册表项的类型有关,还是应该为返回值使用不同的变量?我尝试过其他的变量,但到目前为止都没有效果。
谢谢你的帮助和建议!
发布于 2015-01-14 11:45:31
问题在于
ReadRegStr $3 HKLM "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\SomePrinter" "Name"
是将根指定两次:
HKLM
HKEY_LOCAL_MACHINE\...
从子键名中删除HKEY_LOCAL_MACHINE
,它应该是可以的。如果需要访问注册表的另一部分,请更改ReadRegStr
的2参数,如 manual section中所述
HKCR
for HKEY_CLASSES_ROOT
HKLM
for HKEY_LOCAL_MACHINE
HKCU
for HKEY_CURRENT_USER
HKU
for HKEY_USERS
HKCC
for HKEY_CURRENT_CONFIG
HKDD
for HKEY_DYN_DATA
HKPD
for HKEY_PERFORMANCE_DATA
SHCTX
for SHELL_CONTEXT
https://stackoverflow.com/questions/27938793
复制相似问题