#delphi #uac #manifest #delphi-xe
#delphi #uac #манифест #delphi-xe
Вопрос:
Какой самый простой способ добавить <requestedPrivileges>
информацию о манифесте в проект Delphi XE (.exe)?
Возможно ли добавить только требуемый узел, например:
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator"/>
</requestedPrivileges>
или я должен добавить весь файл манифеста, например?
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="VistaLogonCustomizer.exe" type="*"/>
<description>elevate execution level</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator"/>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/>
</dependentAssembly>
</dependency>
</assembly>
Если мне нужно добавить весь файл манифеста, возникает ли у меня конфликт с файлом сборки в manfest (который генерируется, когда для параметра проекта «Активировать среду выполнения-тему» установлено значение true)?
Комментарии:
1. Вы должны добавить весь манифест и отключить «Активировать среду выполнения-тему». Вы можете либо скомпилировать его с помощью компилятора ресурсов, либо включить отдельный файл .manifest.
Ответ №1:
Вот несколько ссылок
Управление учетными записями пользователей Delphi и Windows Vista
Манифест пользовательского интерфейса Vista
Вот шаги:
Create XML file with following content:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.1.1.1"
processorArchitecture="X86"
name="YourApplicationExeName"
type="win32"/>
<description>elevate execution level</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Назовите этот XML-файл как YourApplicationName.manifest
Создайте текстовый файл со следующим содержимым:
1 24 "YourApplicationName.manifest"
Назовите этот текстовый файл именем вашего приложения.RC с использованием
в командной строке выполните следующую команду:brcc32 ваше имя приложения.RC -foYourApplicationName.REC
Это создаст новый файл ресурсов с именем YourApplicationName.ПОВТОРНО скопируйте это ваше имя приложения.ВВЕДИТЕ файл в путь к ресурсам вашего приложения. Включите этот файл ресурсов в DPR вашего приложения,
как нравится:
{$R YourApplicationName.REC} Наконец, создайте свое приложение — теперь оно готово для получения прав администратора
Комментарии:
1. Сегодня я чувствую себя напряженным. Не могли бы вы, пожалуйста, объяснить, как эти ссылки отвечают на вопрос? Обобщите их содержание здесь или укажите, какие части этих статей наиболее важны для ближайшей задачи.
2. Нет необходимости (и ни одна среда разработки не должна требовать от вас) переходить в командную строку или запускать отдельную команду. Просто добавьте свой сценарий ресурса в проект ( Проект -> Добавить в проект ->
wumpa.rc
-> Открыть ). Теперь Delphi скомпилирует сценарий ресурса. Также обратите внимание, файл сценария ресурса может называться как угодно. Мы всегда вызываем этоwumpa.rc
, как в Поиске wumpa — ссылка на объем работы по обнаружению, что Delphi (в отличие от Visual Studio) может компилировать сценарии ресурсов.3. Требуется ли, чтобы файл манифеста назывался <applicationname>.manifest или также будет работать <SomeGenericName>.manifest?
Ответ №2:
Вы должны добавить весь манифест. Вам нужно отключить версию, сгенерированную IDE в проекте.
Преимущество этого в том, что у вас будет полный и прозрачный контроль над вашим манифестом. Например, вы можете захотеть добавить запись с поддержкой DPI, чтобы ваше приложение хорошо выглядело при более высоких значениях масштабирования шрифта.
Ответ №3:
Возможно ли добавить только требуемый узел
Абсолютно НЕТ. Манифест — это XML-документ, а XML-документы должны быть правильно сформированы. Вот описание XML-схемы:
http://msdn.microsoft.com/en-us/library/aa374191 (VS.85).aspx
Обратите внимание на требуемые элементы и атрибуты.