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

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

Старожил


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

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


MKN, Вот такой макрос получился
nsis RegKeyExists
Код: Выделить весь код
# RETURN value:
#  0 : not exists
# >0 : exists
!define RegKeyExists '!insertmacro RegKeyExists'
!macro RegKeyExists RETURN ROOTKEY SUBKEY
    Push $0
    Push $1
    
    StrCpy $0 0
    
    SetRegView 32
    
    ClearErrors
    EnumRegKey $1 ${ROOTKEY} "${SUBKEY}" 0
    IfErrors +2
    IntOp $0 $0 + 1
    
    SetRegView lastused
    
    ${If} ${RunningX64} 
    SetRegView 64
    
    ClearErrors
    EnumRegKey $1 ${ROOTKEY} "${SUBKEY}" 0
    IfErrors +2
    IntOp $0 $0 + 1
    
    SetRegView lastused
    ${EndIf}
    
    Pop $1
    Exch $0
    Pop ${RETURN}
!macroend

Если есть необходимость знать точно, существует ключ для 32 или 64 бит процесса, то чуть сложнее будет

Внезапно оказалось, что SetRegView 64 благотворно влияет на плагин registry.
Код: Выделить весь код
${registry::KeyExists} "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Scan" $1
возвращает 0, т.е. ключ найден

Цитата MKN:
но нужный инфо-вывод в SDDL формате... Надо как то парсить-расшифровывать. »
С виду парсится должно без хлопот даже в nsis...

Последний раз редактировалось iglezz, 04-03-2021 в 22:39.

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

Отправлено: 20:53, 04-03-2021 | #2576