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