Delphi 7 vista/windows 7 manifest

Будет ли у кого-нибудь пример файла манифеста для Delphi 7, который позволяет приложениям запускаться как администратор в Windows XP/Vista/7?

Запуск приложения с этой функцией обычно приводит к диалогу User Account Control (UAC) с запросом привилегированных разрешений.

Ответы

Ответ 1

Вот шаги:

1. Удалить XPMan: Удалить ссылку на компонент XPMan в своем проекте. XPMan добавляет манифест по умолчанию к исполняемому файлу, который запрещает Windows видеть наш настроенный манифест. Вы не должны беспокоиться о теме XP, предоставленной XPMan, поддержка темы сохраняется в следующем манифесте.

2. Создайте персонализированный манифест. Создайте файл типа Win7UAC.manifest в каталоге проекта (имя файла действительно не имеет значения). добавьте следующие строки в Win7UAC.manifest:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity type="win32" name="App" version="3.1.0.0" processorArchitecture="*"/>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
        </requestedPrivileges>
    </security>
  </trustInfo>
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <!--The ID below indicates application support for Windows Vista -->
      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
      <!--The ID below indicates application support for Windows 7 -->
      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
    </application>
  </compatibility>
</assembly>

Вы можете добавить в этот манифест еще несколько элементов. Вы также можете удалить части Microsoft.Windows.Common-Controls, чтобы отключить поддержку темы.

3. Скомпилируйте манифест для ресурса: Создайте файл с именем Win7UAC.rc в каталоге проекта, который содержит одну строку:

1 24 "Win7UAC.manifest"

Чтобы скомпилировать этот файл, перейдите в cmd, укажите каталог проекта и выполните следующую команду:

brcc32.exe Win7UAC.rc

4. Добавьте ресурс (манифест) в проект: Просто добавьте следующую строку в любом из файлов единиц проекта:

{$R 'Win7UAC.res'}

Подходящее место для добавления этой строки содержится в основном файле проекта (обычно называемом Project1.dpr) и в строке {$R *.res}.

5. Перестройте проект

6. Помните, когда вы добавляете компонент XPMan в любой из блоков проекта, этот манифест UAC будет работать неправильно.

Ответ 2

Вот некоторые информативные ссылки

Первичный пользовательский интерфейс Vista

Контроль учетных записей пользователей Delphi и Windows Vista

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="x86" />
    </dependentAssembly>
  </dependency>

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

Ответ 3

Это отлично работает для меня:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          publicKeyToken="6595b64144ccf1df"
          language="*"
          processorArchitecture="x86"
        />
    </dependentAssembly>
  </dependency>

  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="highestAvailable" />
      </requestedPrivileges>
    </security>

</assembly>

Ответ 4

Используя Delphi XE, мне нужно было снять флажок "Включить темы времени выполнения" в "Проект" → "Параметры" → вкладка "Приложение" для этого работать.

Изменить: извините, похоже, работает с этой опцией.