Вы фактически не создаете файл манифеста в VB.Манифест приложения Windows - это стандартный текстовый документ в формате XML.Вы можете создать его в Блокноте и сохранить его с соответствующим именем файла в каталоге вашего приложения (YourAppName.exe.manifest
).
У Microsoft есть больше информации, доступной здесь: Манифесты приложений .Он даже включает в себя пример манифеста, который вы можете просто скопировать и вставить в пустой текстовый файл для начала работы.
Важно, если вы хотите, чтобы ваше приложение запрашивало у пользователя повышение прав, - это установить requestedExecutionLevel
до requireAdministrator
, а не asInvoker
.Конкретная информация об использовании манифестов с UAC доступна здесь .
Таким образом, полный пример может выглядеть примерно так:
<?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="*"
name="MyMagicalApplication"
type="win32"
/>
<description>Sample manifest for your super cool application</description>
<!-- Request version 6 of the common controls. -->
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<!-- Identify the application security requirements. -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"
/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Традиционный способ встраивания манифеста висполняемый файл использует утилиту mt.exe
, доступную как часть Windows SDK.
На сайте VBAccelerator также есть некоторая информация о встраивании манифестов в VB 6приложение.В частности, в нем говорится:
Существует два способа предоставления манифеста: самый простой (но наименее элегантный) способ - предоставить манифест на диске для исполняемого файла.Допустим, ваше приложение называется TimeSlot.exe.Затем, если вы сохраните вышеуказанный XML-манифест как
TimeSlot.exe.manifest
в том же каталоге, что и исполняемый файл, TimeSlot.exe автоматически получит стили XP.VB5 и VB6 приведены примеры.Если вы переименуете файл .manifest до запуска приложения, вы можете отключить стили XP.
Более надежный метод - скомпилировать манифест в качестве ресурса в вашем приложении.Для этого манифест должен иметь вид ресурса RT_MANIFEST
(24) с идентификатором CREATEPROCESS_MANIFEST_RESOURCE_ID
(1).По какой-то странной причине вы должны также убедиться, что результирующий XML-файл имеет длину, кратную 4 байтам.Так, например, если ваш файл на самом деле имеет размер 597 байт, вам нужно добавить пробел, чтобы довести размер файла до 600 байт перед компиляцией.Примеры ресурсов демонстрируют, как создать этот файл ресурсов, используя скрипт компилятора ресурсов (файл .rc) и RC.exe.
Но если вы хотите встроить манифест автоматически , когдавы создаете свое приложение из VB 6 IDE, вам будет немного сложнее.IDE VB 6 не поддерживает шаги после сборки, поэтому вы не можете просто запустить mt.exe
в командной строке, чтобы сделать это за вас. - это пара утилит, которые я видел по сети, которые утверждают, что автоматически встраивают манифесты для вас, но я считаю, что большинство из них - это старые утилиты, которые обрабатывают только запрос v6 файла ComCtl32.dll.Я не уверен, могут ли они быть легко расширяемыми для включения разрешений UAC, но это стоит попробовать.Вот несколько ссылок для проверки: