Иногда бывает надо проверить, существует тот или иной ключ Реестра 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}
;...