Я застрял в какой-то проблеме с UAC (я думаю).
У меня вопрос: что означает этот значок UAC Shield в некоторых приложениях? И как мне передать этот значок в мой Inno Setup setup.exe
?
Я застрял в какой-то проблеме с UAC (я думаю).
У меня вопрос: что означает этот значок UAC Shield в некоторых приложениях? И как мне передать этот значок в мой Inno Setup setup.exe
?
Установщики Inno Setup по умолчанию требуют прав администратора (если они не настроены создателем установщика). Всплывающее окно UAC будет запущено, если пользователь не изменил настройки UAC в Windows.
http://www.jrsoftware.org/ishelp/index.php?topic=setup_privilegesrequired
[Setup]
: PrivilegesRequired
Допустимые значения: none
, poweruser
, admin
или lowest
Значение по умолчанию: admin
Описание: действие этой директивы зависит от того, какую версию Windows использует пользователь:
Program files
, а записи unistall добавляются в HKLM
- в обоих случаях требуются права администратора. Вы можете заставить программу установки использовать только права пользователя, но это определяет некоторые ограничения - вы не можете выполнять установку в системные папки (включая PF), и вам нужно использовать ветвь реестра HKCU
для всех записей реестра (включая удаление). Такое приложение будет установлено только для одного пользователя.
- person RobeN; 11.09.2016
RunAsOriginalUser
, работают. Есть часть настройки, которая не повышается, поэтому у нее есть доступ к исходному пользовательскому контексту. После повышения уровня программы не существует надежного способа доступа к исходному контексту, поэтому она оставляет после себя часть себя, с которой она может разговаривать. По этой же причине, когда вы щелкаете правой кнопкой мыши «Запуск от имени администратора», эта функция перестает работать правильно.
- person Deanna; 16.09.2016
Как уже говорили другие, Inno Setup по умолчанию требует прав администратора и вызовет запрос UAC. Вы можете изменить это с помощью PrivilegesRequired
. Проблема в том, что на исполняемом файле не отображается значок щита.
Лучший способ сделать это - использовать Microsoft Manifest Tool и изменить манифест, встроенный в исполняемый файл. Обычно он входит в состав Microsoft SDK, которые можно бесплатно загрузить с сайта Microsoft. После установки Инструмент манифеста обычно находится в C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\bin\mt.exe
. Обратите внимание, что некоторые SDK не включают его. Я также нашел его в https://github.com/eladkarako/mt, если вы этого не сделаете. хотите установить SDK.
"path to mt.exe" -inputresource:"path_filename.exe";#1 -out:"path_filename.exe.manifest"
asInvoker
на requireAdministrator
в path_filename.exe.manifest
(файлы манифеста на самом деле являются XML, поэтому вы можете редактировать их с помощью текстового редактора)"path to mt.exe" -manifest "path_filename.exe.manifest" -outputresource:"path_filename.exe";1
Вот так! У исполняемого файла теперь есть значок щита, несмотря ни на что!
Есть еще один метод, который гораздо менее полезен. Вы можете изменить исполняемый файл для запуска от имени администратора в реестре (так же, как щелкнуть его правой кнопкой мыши -> Свойства -> Совместимость -> установить флажок Запуск от имени администратора). Для этого создайте строковое значение, имя которого задано как путь + имя файла исполняемого файла и содержит данные / текст RUNASADMIN
; значение должно быть создано в:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
, если вы хотите изменить его для текущего пользователяHKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
, если вы хотите изменить его для всех пользователей (обычно для этого требуются права администратора)Проблема в том, что он не переносится, если вы перемещаете исполняемый файл (вам нужно делать это снова и снова) или отдаете его кому-то другому (они должны это сделать или должны запустить какой-то инструмент для этого) . Это бесполезно.