inco1,
1. От метки с Goto надо избавляться, раз присутствует конструкция If/Else:
Код:
![Выделить весь код](images/misc/selectcode.png)
SetRegView 64
ClearErrors
EnumRegKey $0 HKLM "SOFTWARE\test" 0
${If} ${Errors}
MessageBox MB_OK|MB_TOPMOST|MB_ICONSTOP "Ключ отсутствует ИЛИ недостаточно привилегий для доступа к ключу ИЛИ какая-то ошибка"
${Else}
MessageBox MB_OK|MB_TOPMOST|MB_ICONSTOP "Есть нужная запись в реестре"
Quit
${EndIf}
SetRegView 32
2. Можно применить новый LogicLib-тест - RegKeyExists:
Код:
![Выделить весь код](images/misc/selectcode.png)
SetRegView 64
${If} HKLM RegKeyExists "SOFTWARE\test"
; Существует
${Else}
; Ключ отсутствует ИЛИ недостаточно привилегий для доступа к ключу ИЛИ какая-то ошибка
${EndIf}
SetRegView 32
Код RegKeyExists:
Код:
![Выделить весь код](images/misc/selectcode.png)
!ifndef RegKeyExists
!macro _RegKeyExists _a _b _t _f
!insertmacro _LOGICLIB_TEMP
ClearErrors
EnumRegKey $_LOGICLIB_TEMP ${_a} `${_b}` 0
IfErrors `${_f}` `${_t}`
!macroend
!define RegKeyExists `RegKeyExists`
!endif
!!! Важное примечание:
Отсутствие ошибки EnumRegKey или положительный тест RegKeyExists значит, что ключ существует.
Ошибка после EnumRegKey или отрицательный тест RegKeyExists значит, что ключ отсутствует ИЛИ недостаточно привилегий для доступа к ключу ИЛИ какая-то ошибка