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