Не удалось записать в реестр HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \\ CurrentVersion \ AppCompatFlags \ Layers, используя NSIS [duplicate]

Я хочу, чтобы мое приложение запускалось как администратор в Windows 8.1, поэтому я использую NSIS для его настройки, добавив следующее значение в реестр Windows:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\MBM\\testo.exe"="~ RUNASADMIN"

Проблема в том, что NSIS не пишет это значение в реестре Windows, хотя оно может писать другие!

NSIS отлично работает как администратор с помощью

RequestExecutionLevel admin

Я использую следующий фрагмент NSIS для записи в реестре Windows (1-й строка и 2-й рабочий тон, а третий - нет)

WriteRegStr HKLM "SOFTWARE\${ORGANIZATION}\${APPNAME}" ClientVersion "${VERSION}"
WriteRegStr HKLM "SOFTWARE\${ORGANIZATION}\${APPNAME}" ClientPath "$INSTDIR"
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" $INSTDIR\${APPNAME}.exe "~ RUNASADMIN"
0
задан mbnoimi 5 August 2014 в 17:13
поделиться

1 ответ

На самом деле вы не должны писать ключ AppCompatFlags. Ваше приложение должно обнаружить, что оно не повышено, а затем уведомлять пользователя или пытаться перезагрузить себя.

Если это 64-битная система, тогда будут два ключа AppCompatFlags (другой в Software \ Wow6432Node ), и вы можете использовать инструкцию SetRegView NSIS, чтобы выбрать, к какому ключу вы хотите записать.

1
ответ дан Anders 21 August 2018 в 22:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: