Вы здесь

Обход требований манифеста

В некоторые программы разработчики включают требования по принудительному повышению полномочий до админских при их запуске. Такое требование прописывается в специальной секции программы — манифесте. У таких программ в правой нижней части иконки имеется иконка щита:

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

В этой статье приведены способы обхода таких требований манифеста. Все они базируются на передаче специальной переменной окружения в программу. Манифест устанавливает настройку requestedExecutionLevel в requireAdministrator, а нам нужно asInvoker.

Способ 1. Через ярлык (лучший)

Необходимо создать ярлык с указанным ниже объектом запуска (на примере программы c:\windows\system32\calc.exe):

cmd.exe /C "set __COMPAT_LAYER=RUNASINVOKER && start """" ""c:\windows\system32\calc.exe"""

Внимание! Пока не удалось решить проблемы с запуском файлов, в пути к которым есть пробелы или русские буквы. Используйте способ 2.

Способ 2. Через BAT-файл

Такой BAT-файл позволит запустить программу c:\folder with spaces\даже русский.exe без запроса повышения прав:

chcp 1251
set __COMPAT_LAYER=RUNASINVOKER
start "" "c:\folder with spaces\даже русский.exe"

Технически chcp 1251 можно не использовать, можно сохранить BAT в кодировке 866 (блокнот сохраняет в windows-1251).

Способ 3. Через Resource Hacker (очень плохой)

Программа Resource Hacker позволяет изменить manifest в самом exe: в блоке manifest, значение  <requestedExecutionLevel level="requireAdministrator"/> меняем на <requestedExecutionLevel level="asInvoker"/>, компилируем, сохраняем. Все. ПО начинает запускаться не запрашивая права админа.

Внимание! Способ изменяет сам файл. Некоторые (большинство современных) подписаны электронной подписью (MS Authenticode), изменение манифеста приводит к нарушению подписи.

Дополнительно