NSIS. Проверка существования ключа Реестра.
Иногда бывает надо проверить, существует тот или иной ключ Реестра Windows
Для этого можно воспользоваться стандартной функцией
EnumRegKey
:EnumRegKey <var> <root_key> <subkey> <index>
где:
<var>
- переменная для названия ключа Реестра, которое будет возвращено функцией.<root_key>
- корневой ключ Реестра (HKCR|HKCU|HKLM|HKU|HKCC
)<subkey>
- путь в Реестре, например Software\Microsoft\Windows
<index>
- индекс следующего ключа.Функция перебирает все подключи в указанной ветке Реестра. Пример для перечисления можно посмотреть здесь
Если ключ не существует, то функция
EnumRegKey
сгенерирует ошибку, которую можно отследить:!include Logiclib.nsh ;подключаем библиотеку с нормальными логическими конструкциями.
;...
ClearErrors ;очищаем флаг ошибки
EnumRegKey $0 HKCU "Software\Microsoft\" 0
${If} ${Errors} ;ключ не существует
DetailPrint "HKEY_CURRENT_USER\Software\Microsoft not EXIST!"
${Else} ;ключ существует
DetailPrint "HKEY_CURRENT_USER\Software\Microsoft EXIST!"
${EndIf}
;...
Пример целиком на GitHub
Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2020/11/12/nsis-p