Почему Windows запрашивает привилегии системного администратора для запуска исполняемых файлов с именем "install"?
Я создаю инструмент, который позволяет установить приложение в наш симулятор, и он называется cl-install.exe. Это действительно не требует никаких прав администратора для запуска. Но в Windows 7 всегда появляется диалоговое окно с просьбой предоставить права администратора, когда эта команда вызывается из командной строки.
Если я переименую этот исполняемый файл в другое имя без слов "установка" или "установка", Windows не будет требовать прав администратора.
Можно ли как-то помешать Windows сделать это без переименования моего исполняемого файла?
3 ответа
Это часть эвристики, присутствующей в Windows Vista и более поздних версиях. Отсюда, если файл содержит слова "установить", "установить" или "обновить" - предполагается установка.
Вы можете предотвратить это, добавив следующее в манифест
<requestedExecutionLevel level="asInvoker" />
Я нашел рабочее решение здесь: https://github.com/bmatzelle/gow/issues/156
Цитата:
Решение состоит в том, чтобы написать файл манифеста, указанный ниже для исполняемых файлов, чтобы убедить UAC в том, что ему не требуются права администратора.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<!-- Make sure that UAC believes
that it does not require administrative privilege -->
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Имена файлов манифеста должны содержать install.exe.manifest и patch.exe.manifest, а затем поместить их в ту же папку, что и install.exe и patch.exe.
Если запрос UAC все еще появляется, измените метку времени install.exe и patch.exe, чтобы убедить Windows выбрать новый файл манифеста.
Если я правильно помню, вы можете отключить это поведение следующим образом (цитируется Technet):
Нажмите " Пуск", выберите " Все программы", нажмите " Стандартные", нажмите "Выполнить", введите secpol.msc в текстовом поле " Открыть" и нажмите кнопку " ОК".
В дереве консоли " Локальные параметры безопасности" щелкните Локальные политики, а затем нажмите Параметры безопасности.
Прокрутите вниз и дважды щелкните Управление учетными записями пользователей: обнаружение установок приложений и запрос на повышение прав.
Выберите параметр " Отключено" и нажмите кнопку " ОК".
Закройте окно Local Security Settings.
Возможно, вам придется повторно войти в систему, чтобы настройки вступили в силу.