我需要检查注册表值是否存在。我怎样才能做到这一点?
我的第一个方法:
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" "NUL:"
${IF} $0 == ""
MESSAGEBOX MB_OK "NUL exists"
${ELSE}
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" "NUL:" ""
${ENDIF}
但当该值不存在时,这也有效。我想,因为“不存在”和空字符串的处理方式相同。
对于Registry.nsh,我是这样做的:
${registry::Read} "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" "NUL:" $var1 $var2
${IF} $var2 == "REG_SZ"
但我收到错误,因为registry.nsh 中的 Pop ${_STRING} 不起作用。
欢迎帮助和建议!
您应该在阅读后检查错误标志:
ClearErrors
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" "NUL:"
${If} ${Errors}
MessageBox MB_OK "Value not found"
${Else}
${IF} $0 == ""
MESSAGEBOX MB_OK "NUL exists and it's empty"
${ELSE}
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports" "NUL:" ""
${ENDIF}
${EndIf}
另外,您可能感兴趣枚举寄存器值 http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.2.6在尝试阅读之前。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)