Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Старожил


Сообщения: 352
Благодарности: 193

Профиль | Отправить PM | Цитировать


inco1,
1. От метки с Goto надо избавляться, раз присутствует конструкция If/Else:
Код: Выделить весь код
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:
Код: Выделить весь код
SetRegView 64
${If} HKLM RegKeyExists "SOFTWARE\test"
  ; Существует
${Else}
  ; Ключ отсутствует ИЛИ недостаточно привилегий для доступа к ключу ИЛИ какая-то ошибка
${EndIf}
SetRegView 32
Код RegKeyExists:
Код: Выделить весь код
!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 значит, что ключ отсутствует ИЛИ недостаточно привилегий для доступа к ключу ИЛИ какая-то ошибка

Последний раз редактировалось iglezz, 10-08-2023 в 22:26. Причина: замена на корректный вариант

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:40, 10-08-2023 | #2774