Редактор ресурсов

   English English  Deutsch Deutsch  Русский Русский

главная  программы  resource tuner  руководство

Как указать в манифесте уровень привилегий для запуска приложения под Windows

Здесь рассматривается вопрос добавления секции Trust Info с разделом Security для поддержки управления учетными записями (UAC) в уже существующий манифест приложения. В случае, если приложение вообще не имеет манифеста в ресурсах, его следует добавить, используя Мастер манифестов.

Приложение без поддержки UAC в манифесте, которое не запускается явно с административными привилегиями, будет работать в режиме виртуализации совместимости. В этом режиме все глобальные операции записи, например в реестр или в разделы, не предназначенные для пользователя, перенаправляются в разделы, назначенные пользователю. Повышение пользователем уровня прав для такой программы невозможно. Система считает такую программу без манифеста UAC "старой" и создает в целях безопасности для такой программы выделенное пространство имен. Другие программы это пространство не видят.

Если вашему приложению требуется повысить уровень привелегий и отключить виртуализацию, необходимо добавить в манифест секцию Trust Info с разделом Security для поддержки управления учетными записями (UAC). Или удалить манифест, а затем сгенерировать и вставить новый манифест.


“До этого я пытался использовать mt.exe [из MS Visual Studio] для вставки манифестов в мои файлы. На некоторых файлах срабатывало, на некоторых нет. Похоже, ваш метод парсинга .EXE файлов оказался более надёжен, чем тот, который используется в mt.exe.”

Brad Siegfried,
BLS, Inc.

  Отзывы пользователей

 

Формат указания запрашиваемого уровня привилегий следующий:

<requestedExecutionLevel
     level="asInvoker|highestAvailable|requireAdministrator"
     uiAccess="true|false"/>

где

Level:

  • As Invoker — Приложение выполняется с тем же маркером, что и его родительский процесс. Это параметр UAC по умолчанию, и его рекомендуется использовать для всех приложений Windows.
  • Highest Available — Приложение выполняется с самыми высокими правами, доступными текущему пользователю.
  • Require Administrator — Приложение выполняется с полным набором прав администратора. На локальном компьютере только членам группы администраторов разрешено запускать приложение с этим параметром. Вызов приложения с данным уровнем прав приводит к тому, что диалоговое окно UAC запрашивает возможность выполнения приложения с этим уровнем прав.
  • Если приложению требуются права администратора не постоянно, а только для выполнения какой-то разовой функции (например, для настройки межсетевого экрана), то основной процесс приложения следует выполнять с правами обычного пользователя, а функцию, требующую прав администратора, вынести в отдельный процесс.

uiAccess

  • false — Приложению не требуется передавать ввод данных в другие окна.
  • true — Приложению разрешается обойти защиту и передавать ввод данных в окно с более высокими привилегиями. Подобная настройка должна использоваться только для приложений со специальными возможностями, например, для экранной клавиатуры.
  • Для запуска приложения, требующего uiAccess=true, файл должен иметь действительную цифровую подпись с использованием code-signing сертификата от доверенного поставщика.


Добавление секции Trust Info с разделом Security

1. Скачайте и установите Resource Tuner, откройте ваш файл, раскройте папку Manifest в Дереве ресурсов и выберите ресурс.

Примечание: Если в файле нет манифеста, добавьте его, используя Мастер добавления манифеста.

Выберите ресурс манифест

2. Вы увидите XML скрипт манифеста. Выглядит он обычно так:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    name="Microsoft.Windows.MyCoolApp"
    processorArchitecture="x86"
    version="5.1.0.0"
    type="win32"/>
<description>Application description here</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
           type="win32"
           name="Microsoft.Windows.Common-Controls"
           version="6.0.0.0"
           processorArchitecture="x86"
           publicKeyToken="6595b64144ccf1df"
           language="*"
        />
     </dependentAssembly>
  </dependency>
</assembly>

3. Важно убедится, что секция trustInfo в манифесте отсутствует.

4. Теперь вставим секцию trustInfo в манифест. Нажмите кнопку Resource Editor на панели инструментов (третья слева), чтобы отредактировать код манифеста.

Редактировать код манифеста

5. Скопируйте и вставьте секцию TrustInfo в манифест:

<!-- Identify the application security requirements. -->
<!-- level can be "asInvoker", "highestAvailable", or "requireAdministrator" -->

   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
      <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
      </requestedPrivileges>
    </security>
   </trustInfo>



Скопируйте и вставьте секцию TrustInfo в манифест

6. Выбирете в меню 'File' -> 'Save File As ...' для сохранения изменений в файл. Если появится предупреждение о том, что размер файла изменился, нажмите "Yes" для подтверждения. Для отмены всех изменений нажмите кнопку Cancel.

Изменения в файле вступят в силу только после того, как вы сохраните файл на диск.


Замена манифестов из командной строки при помощи Resource Tuner Console

Если вам требуется регулярно заменять или вставлять манифесты в десятках файлов, эту операцию целесообразно производить с помощью программы для пакетной замены манифестов - Resource Tuner Console.

Руководство   
начало | след. 

 

 

Скачайте бесплатную ознакомительную версию!

Скачать Resource Tuner
Resource Tuner работает на всех версиях Windows
от XP до 11.

Минимальные системные требования:
Процессор Intel Pentium® или AMD K5 166 MHz
16 MB RAM