У меня естьNSIS Installer: Обнаружить, если RequestExecutionLevel не работает
RequestExecutionLevel admin
в моем NSIS скриптом.
Проблема заключается в том, что если в Windows UAC установлено значение «никогда не уведомлять», и обычный пользователь запускает установщик, установщик пытается продолжить работу, не запрашивая разрешения и терпит неудачу с неясным сообщением на полпути, когда он пытается изменить у пользователя каталога нет разрешения.
Что бы я хотел сделать, это быстро выйти из строя и сразу показать диалог: «Пожалуйста, запустите как администратор».
Я попытался добавить следующий snippit, который я нашел, но он ВСЕГДА терпит неудачу, если пользователь не является администратором (но не нормальным пользователем с уровнем выполнения администратора).
UserInfo::GetAccountType pop $0 ${If} $0 != "admin" MessageBox mb_iconstop "Administrator rights required!" SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED Quit ${EndIf}
Windows версия? Что такое значение ConsentPromptBehaviorAdmin и ConsentPromptBehaviorUser в вашем реестре в HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System? – Anders
Я вижу, что на самом деле происходит сейчас. Даже если пользователь использует Right Click -> Run as administrator, так как UAC «никогда не уведомляет», он все равно будет запускать программу как обычный пользователь. Код у меня в порядке, но я собираюсь изменить сообщение об ошибке, чтобы указать, что это может быть их проблемой. – Will