Delphi 7 Vista / Windows 7 манифест - PullRequest
       42

Delphi 7 Vista / Windows 7 манифест

15 голосов
/ 21 января 2011

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

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

Ответы [ 4 ]

21 голосов
/ 30 мая 2011

Вот шаги:

1.Удалить XPMan: Удалить все ссылки на XPMan компонент в вашем проекте.XPMan добавляет манифест по умолчанию к исполняемому файлу, который не позволяет Windows видеть наш настроенный манифест.Вы не должны беспокоиться о XP Theme , предоставляемых 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 не будет работать должным образом.

6 голосов
/ 21 января 2011

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

Главный интерфейс Vista UI

Контроль учетных записей пользователей 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>
2 голосов
/ 13 сентября 2011

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

Редактировать: извините, похоже, работаетс включенной этой опцией.

2 голосов
/ 21 января 2011

Это прекрасно работает для меня:

<?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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...