Поделиться через


Манифесты приложения

Манифест приложения (также известный как параллельный манифест приложения или манифест fusion ) — это XML-файл, описывающий и идентифицирующий общие и частные параллельные сборки, к которым приложение должно привязаться во время выполнения. Это должны быть те же версии сборок, которые использовались для тестирования приложения. Манифесты приложений также могут описывать метаданные для файлов, которые являются частными для приложения.

Полный список XML-схемы см. в схеме файла манифеста.

Манифесты приложения имеют следующие элементы и атрибуты.

Элемент Атрибуты Обязательно
собрание Да
версия манифеста Да
noInherit нет
assemblyIdentity Да
тип Да
name Да
языка нет
processorArchitecture нет
версия Да
publicKeyToken нет
совместимость нет
приложение нет
поддерживаемые ОС нет
Id Да
maxversiontested нет
Id Да
зависимость нет
зависимыйAssembly нет
файла нет
name Да
hashalg нет
хэш нет
активируемый Класс нет
name Да
threadingModel Да
activeCodePage нет
autoElevate нет
disableTheming нет
disableWindowFiltering нет
dpiAware нет
dpiAwareness нет
gdiScaling нет
highResolutionScrollingAware нет
longPathAware нет
printerDriverIsolation нет
ultraHighResolutionScrollingAware нет
msix нет
кучиType нет
поддерживаемыеarchitectures нет
trustInfo нет

Расположение файла

Если это возможно, необходимо внедрить манифест приложения в качестве ресурса в файл приложения .exe или .dll. Если этого не удается сделать, вы можете поместить файл манифеста приложения в тот же каталог, что и ..exe.dll

Дополнительные сведения см. в разделе "Установка параллельных сборок".

Имя файла

По соглашению манифест приложения должен иметь то же имя, что и исполняемый файл приложения, а .manifest расширение добавлено к нему.

Например, манифест приложения, который ссылается example.exe или example.dll должен использовать следующий синтаксис имени файла (если идентификатор ресурса равен 1, можно опустить < сегмент идентификатора> ресурса синтаксиса).

example.exe.<идентификатор> ресурса. очевидный

example.dll.<идентификатор> ресурса. очевидный

Элементы

Имена элементов и атрибутов чувствительны к регистру. Значения элементов и атрибутов не учитывает регистр, за исключением значения атрибута типа.

сборка

Элемент контейнера. Его первый подэлемент должен быть элементом noInherit или assemblyIdentity . Обязательное.

Элемент сборки должен находиться в пространстве urn:schemas-microsoft-com:asm.v1имен. Дочерние элементы сборки также должны находиться в этом пространстве имен путем наследования или путем тегов.

Элемент сборки имеет следующие атрибуты.

Атрибут Описание
версия манифеста Атрибут manifestVersion должен иметь значение 1.0.

noInherit

Включите этот элемент в манифест приложения, чтобы задать контексты активации , созданные из манифеста, с флагом "без наследования". Если этот флаг не задан в контексте активации, а контекст активации активен, он наследуется новыми потоками в том же процессе, окнах, процедурах окон и асинхронных вызовах процедур. Установка этого флага предотвращает наследование активного контекста нового объекта.

Элемент noInherit является необязательным и обычно опущен. Большинство сборок не работают правильно с помощью контекста активации без наследования, так как сборка должна быть явно разработана для управления распространением собственного контекста активации. Использование элемента noInherit требует, чтобы все зависимые сборки, на которые ссылается манифест приложения, не имели элемента noInherit в манифесте сборки.

Если в манифесте используется noInherit , он должен быть первым подэлементом элемента сборки . Элемент assemblyIdentity должен поступать сразу после элемента noInherit . Если параметр noInherit не используется, assemblyIdentity должен быть первым подэлементом элемента сборки . Элемент noInherit не имеет дочерних элементов. Недопустимый элемент в манифестах сборки.

assemblyIdentity

Как первый подэлемент элемента сборки, assemblyIdentity описывает и однозначно идентифицирует приложение, принадлежащее этому манифесту приложения. Как первый подэлемент зависимого элементаAssembly, assemblyIdentity описывает параллельную сборку, требуемую приложением. Обратите внимание, что для каждой сборки, на которую ссылается манифест приложения, требуется сборкаIdentity , которая точно соответствует assemblyIdentity в собственном манифесте сборки, на которую ссылается ссылка.

Элемент assemblyIdentity имеет следующие атрибуты. Он не имеет подэлементов.

Атрибут Описание
тип Указывает тип приложения или сборки. Значение должно быть win32 и все в нижнем регистре. Обязательное.
name Уникальное имя приложения или сборки. Используйте следующий формат для имени: Organization.Division.Name Например, Microsoft.Windows.mysampleApp. Обязательное.
языка Определяет язык приложения или сборки. Если приложение или сборка зависят от языка, укажите код языка DHTML. В assemblyIdentity приложения, предназначенного для использования во всем мире (нейтрального языка), опустите атрибут языка.
В assemblyIdentity сборки, предназначенной для использования во всем мире (нейтрального языка), задайте значение языка *. Необязательно.
processorArchitecture Задает процессор. Допустимые значения: x86, armamd64и arm64. Можно также указать *, что гарантирует, что все платформы предназначены. Необязательно.
версия Указывает версию приложения или сборки. Используйте формат mmmmm.nnnnn.ooooo.pppppчетырех частей: Каждая из частей, разделенных периодами, может составлять 0–65535 включительно. Более подробную информацию см. в версиях сборки . Обязательное.
publicKeyToken Шестнадцатеричная строка, представляющая последние 8 байт хэша SHA-1 открытого ключа, под которым подписывается приложение или сборка. Открытый ключ, используемый для подписи каталога, должен иметь значение 2048 бит или больше. Требуется для всех общих параллельных сборок.
<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"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
       />
   </dependentAssembly>
</dependency>
...
</assembly>

compatibility

Содержит хотя бы одно приложение. Он не имеет атрибутов. Необязательно. Манифесты приложений без элемента совместимости по умолчанию совместимы с Windows Vista в Windows 7.

Элемент совместимости должен находиться в пространстве urn:schemas-microsoft-com:compatibility.v1имен. Дочерние элементы совместимости также должны находиться в этом пространстве имен путем наследования или путем тегов.

приложение

Содержит хотя бы один поддерживаемый элементOS . Начиная с Windows 10 версии 1903, он также может содержать один необязательный элемент maxversiontested . Он не имеет атрибутов. Необязательно.

поддерживаемые ОС

Поддерживаемый элементOS имеет следующий атрибут. Он не имеет подэлементов.

Атрибут Описание
Id Задайте для атрибута Id значение {e2011457-1546-43c5-a5fe-008deee3d3f0} для запуска приложения с помощью функций Vista. Это может позволить приложению, предназначенному для Windows Vista, работать в более поздней операционной системе.
Задайте для атрибута Id значение {35138b9a-5d96-4fbd-8e2d-a24025f93a} для запуска приложения с помощью функций Windows 7.
Приложения, поддерживающие функции Windows Vista, Windows 7 и Windows 8, не требуют отдельных манифестов. В этом случае добавьте идентификаторы GUID для всех операционных систем Windows.
Сведения о поведении атрибута Идентификатора в Windows см. в книге по совместимости Windows 8 и Windows Server 2012.
Следующие идентификаторы GUID соответствуют указанным операционным системам:
{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a} —> Windows 10, Windows 11, Windows Server 2016, Windows Server 2019 и Windows Server 2022
{1f676c76-80e1-4239-95bb-83d0f6d0da78} —> Windows 8.1 и Windows Server 2012 R2
{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38} —> Windows 8 и Windows Server 2012
{35138b9a-5d96-4fbd-8e2d-a240225f93a} —> Windows 7 и Windows Server 2008 R2
{e2011457-1546-43c5-a5fe-008deee3d3f0} —> Windows Vista и Windows Server 2008
Это можно проверить в Windows 7 или Windows 8.x, выполнив монитор ресурсов (resmon), перейдя на вкладку ЦП, щелкнув правой кнопкой мыши метки столбцов , "Выбрать столбец..." и установите флажок "Контекст операционной системы". В Windows 8.x этот столбец также можно найти в диспетчере задач (taskmgr). Содержимое столбца показывает наибольшее значение, найденное или "Windows Vista" в качестве значения по умолчанию.

maxversiontested

Элемент maxversiontested указывает версии Windows, на которые было протестировано приложение, начиная с минимальной версии ОС, которую приложение поддерживает до максимальной версии. Полный набор версий можно найти здесь. Это предназначено для использования классическими приложениями, используюющими XAML Islands , и которые не развертываются в пакете MSIX. Этот элемент поддерживается в Windows 10 версии 1903 и более поздних версиях.

Элемент maxversiontested имеет следующий атрибут. Он не имеет подэлементов.

Атрибут Описание
Id Присвойте атрибуту Идентификатора строку версии 4-части, указывающую максимальную версию Windows, на которую тестировалось приложение. Например, "10.0.18362.1" для Windows 10 версии 1903. Обязательное.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
        <application>
            <!-- Windows 10, version 1903 -->
            <maxversiontested Id="10.0.18362.1"/>
            <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
        </application>
    </compatibility>
...
</assembly>

dependency

Содержит по крайней мере один зависимыйAssembly. Он не имеет атрибутов. Необязательно.

зависимыйAssembly

Первым подэлементом зависимойAssembly должен быть элемент assemblyIdentity , описывающий параллельную сборку, требуемую приложением. Каждый зависимыйAssembly должен находиться в одной зависимости. Он не имеет атрибутов.

файл

Указывает файлы, которые являются частными для приложения. Необязательно.

Элемент файла содержит атрибуты, показанные в следующей таблице.

Атрибут Описание
name Имя файла. Например, Comctl32.dll. Обязательное.
hashalg Алгоритм, используемый для создания хэша файла. Это значение должно быть SHA1. Необязательно.
хэш Хэш файла, на который ссылается имя. Шестнадцатеричная строка длины в зависимости от хэш-алгоритма. Необязательно.

активируемый Класс

Позволяет непакуемым классическим приложениям использовать пользовательские компоненты среды выполнения Windows (WinRT). Этот элемент поддерживается в Windows 10 версии 1903 и более поздних версиях. Дополнительные сведения см. в этой статье.

Элемент активируемый Класс должен находиться в пространстве urn:schemas-microsoft-com:winrt.v1имен.

Элемент activeableClass имеет следующие атрибуты.

Атрибут Описание
name Указывает идентификатор класса для активируемого класса. Обязательное.
threadingModel Представляет модель потоков квартиры, используемую для активации внутрипроцессного сервера. Допустимые значения включают both, STAили MTA. Дополнительные сведения см. в этой статье . Обязательное.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
<file name="WinRTComponent.dll">
    <activatableClass
        name="WinRTComponent.MessageHolder"
        threadingModel="both"
        xmlns="urn:schemas-microsoft-com:winrt.v1"
     />
</file>
...
</assembly>

activeCodePage

В Windows 10 этот элемент заставляет процесс использовать UTF-8 в качестве кодовой страницы процесса. Дополнительные сведения см. на кодовой странице UTF-8. В Windows 10 единственным допустимым значением для activeCodePage является UTF-8.

Начиная с Windows 11, этот элемент также позволяет выбрать устаревшую кодовую страницу, отличной от UTF-8, или кодовые страницы для определенного языкового стандарта для совместимости устаревших приложений. Современные приложения настоятельно рекомендуется использовать Юникод. В Windows 11 activeCodePage также может быть задано значение "Устаревшая версия" или имя языкового стандарта, например en-US или ja-JP.

  • На компьютерах, настроенных для активной кодовой страницы UTF-8, устаревшая версия перевернет процесс на страницы кода системы языкового стандарта. Если языковой стандарт системы не имеет определенных кодовых страниц, будет использоваться Windows-1252/437. Параметр устаревшей кодовой страницы поддерживается только в манифестах Fusion и только начиная с Windows 11.
  • При указании имени языкового стандарта, например en-US , кодовая страница процесса будет задана соответствующим образом для этой кодовой страницы языкового стандарта. Например, Windows-1252 и 437 для en-USили 932 для ja-JP.

Этот элемент был добавлен в Windows 10 версии 1903 (обновление за май 2019 г.). Вы можете объявить это свойство и целевой объект или запустить в предыдущих сборках Windows, но необходимо обрабатывать обнаружение и преобразование устаревшей кодовой страницы как обычно. Этот элемент не имеет атрибутов.

В следующем примере показано, как использовать этот элемент для принудительного использования текущего процесса в качестве кодовой страницы процесса UTF-8.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings"> 
      <activeCodePage>UTF-8</activeCodePage> 
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

autoElevate

Указывает, включено ли автоматическое повышение привилегий. ЗНАЧЕНИЕ TRUE указывает, что он включен. Он не имеет атрибутов. Исполняемый файл должен быть цифрово подписан издателем Windows. Для внутреннего использования.

disableTheming

Указывает, отключается ли предоставление элементов пользовательского интерфейса теме. ЗНАЧЕНИЕ TRUE указывает на отключение. Он не имеет атрибутов.

disableWindowFiltering

Указывает, следует ли отключить фильтрацию окон. TRUE отключает фильтрацию окон, чтобы можно было перечислить иммерсивные окна из рабочего стола. disableWindowFiltering добавлен в Windows 8 и не имеет атрибутов.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
      <disableWindowFiltering>true</disableWindowFiltering>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

dpiAware

Указывает, соответствует ли текущий процесс точкам на дюйм (dpi).

Windows 10 версии 1607: Элемент dpiAware игнорируется, если присутствует элемент dpiAwareness . Вы можете включить оба элемента в манифест, если вы хотите указать другое поведение для Windows 10 версии 1607, чем для более ранней версии операционной системы.

В следующей таблице описывается поведение, которое приводит к результату на основе присутствия элемента dpiAware и текста, содержащегося в нем. Текст в элементе не учитывает регистр.

Состояние элемента dpiAware Описание
Отсутствующий Текущий процесс не знает по умолчанию. Этот параметр можно изменить программным способом, вызвав функцию SetProcessDpiAware или SetProcessDPIAware .
Содержит значение true Текущий процесс учитывает системный dpi.
Содержит значение false Windows Vista, Windows 7 и Windows 8: Поведение совпадает с тем, что при отсутствии dpiAware .
Windows 8.1 и Windows 10: Текущий процесс не знает о dpi, и вы не можете программно изменить этот параметр, вызвав функцию SetProcessDpiAware илиSetProcessDPIAware .
Содержит значение true/pm Windows Vista, Windows 7 и Windows 8: Текущий процесс учитывает системный dpi.
Windows 8.1 и Windows 10: Текущий процесс учитывается для каждого монитора dpi.
Содержит "на монитор" Windows Vista, Windows 7 и Windows 8: Поведение совпадает с тем, что при отсутствии dpiAware .
Windows 8.1 и Windows 10: Текущий процесс учитывается для каждого монитора dpi.
Содержит любую другую строку Windows Vista, Windows 7 и Windows 8: Поведение совпадает с тем, что при отсутствии dpiAware .
Windows 8.1 и Windows 10: Текущий процесс не знает о dpi, и вы не можете программно изменить этот параметр, вызвав функцию SetProcessDpiAware илиSetProcessDPIAware .

Дополнительные сведения о параметрах осведомленности о dpi см. в статье "Разработка классических приложений с высоким уровнем DPI" в Windows.

dpiAware не имеет атрибутов.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

dpiAwareness

Указывает, соответствует ли текущий процесс точкам на дюйм (dpi).

Минимальная версия операционной системы, поддерживающей элемент dpiAwareness , — Windows 10 версии 1607. Для версий, поддерживающих элемент dpiAwareness , dpiAwareness переопределяет элемент dpiAware . Вы можете включить оба элемента в манифест, если вы хотите указать другое поведение для Windows 10 версии 1607, чем для более ранней версии операционной системы.

Элемент dpiAwareness может содержать один элемент или список разделенных запятыми элементов. В последнем случае используется первый (левый) элемент в списке, распознаваемый операционной системой. Таким образом, можно указать различные варианты поведения, поддерживаемые в будущих версиях операционной системы Windows.

В следующей таблице описывается поведение, которое приводит к результату на основе присутствия элемента dpiAwareness и текста, содержащегося в самом левом распознаваемом элементе. Текст в элементе не учитывает регистр.

Состояние элемента dpiAwareness: Описание
Элемент отсутствует Элемент dpiAware указывает, учитывает ли процесс dpi.
Содержит не распознанные элементы Текущий процесс не знает по умолчанию. Этот параметр можно изменить программным способом, вызвав функцию SetProcessDpiAware или SetProcessDPIAware .
Первый распознанный элемент — "system" Текущий процесс учитывает системный dpi.
Первый распознанный элемент — "permonitor" Текущий процесс учитывается для каждого монитора dpi.
Первый распознанный элемент — permonitorv2 Текущий процесс использует контекст осведомленности о dpi для каждого монитора версии 2. Этот элемент распознается только в Windows 10 версии 1703 или более поздней.
Первый распознанный элемент "не знает" Текущий процесс не знает о dpi. Вы не можете программно изменить этот параметр, вызвав функцию SetProcessDpiAware или SetProcessDPIAware .

Дополнительные сведения о параметрах осведомленности о dpi, поддерживаемых этим элементом, см. в DPI_AWARENESS и DPI_AWARENESS_CONTEXT.

DpiAwareness не имеет атрибутов.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
      <dpiAwareness>PerMonitorV2, unaware</dpiAwareness>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

gdiScaling

Указывает, включена ли масштабирование GDI. Минимальная версия операционной системы, поддерживающей элемент gdiScaling , — Windows 10 версии 1703.

Платформа GDI (интерфейс графического устройства) может применять масштабирование DPI к примитивам и тексту на основе монитора без обновлений самого приложения. Это может быть полезно для приложений GDI, которые больше не обновляются.

Не векторная графика (например, растровые изображения, значки или панели инструментов) не может масштабироваться этим элементом. Кроме того, графика и текст, отображаемые в растровых изображениях динамически созданные приложениями, также не могут масштабироваться этим элементом. Дополнительные сведения см. в разделе "Улучшение высокого уровня DPI" в классических приложениях на основе GDI.

Этот параметр можно программно изменить, вызвав функцию SetThreadDpiAwarenessContext или SetProcessDpiAwarenessContext со DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED значением.

ЗНАЧЕНИЕ TRUE указывает, что этот элемент включен. Он не имеет атрибутов.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2017/WindowsSettings">
      <gdiScaling>true</gdiScaling>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

highResolutionScrollingAware

Указывает, включена ли функция поддержки прокрутки с высоким разрешением. ЗНАЧЕНИЕ TRUE указывает, что он включен. Он не имеет атрибутов.

longPathAware

Включает длинные пути, превышающие MAX_PATH длину. Этот элемент поддерживается в Windows 10 версии 1607 и более поздних версиях. Дополнительные сведения см. в этой статье.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
      <ws2:longPathAware>true</ws2:longPathAware>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

printerDriverIsolation

Указывает, включена ли изоляция драйвера принтера. ЗНАЧЕНИЕ TRUE указывает, что он включен. Он не имеет атрибутов. Изоляция драйвера принтера повышает надежность службы печати Windows, позволяя драйверам принтеров выполняться в процессах, в которых выполняется spooler печати. Поддержка изоляции драйверов принтера началась в Windows 7 и Windows Server 2008 R2. Приложение может объявить изоляцию драйвера принтера в манифесте приложения, чтобы изолировать себя от драйвера принтера и повысить надежность. То есть приложение не завершает работу, если драйвер принтера имеет ошибку.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
      <printerDriverIsolation>true</printerDriverIsolation>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

ultraHighResolutionScrollingAware

Указывает, включена ли поддержка прокрутки с высоким разрешением. ЗНАЧЕНИЕ TRUE указывает, что он включен. Он не имеет атрибутов.

msix

Указывает сведения об удостоверениях пакета с внешним расположением для текущего приложения (см. раздел "Предоставить удостоверение пакета путем упаковки с внешним расположением"). Этот элемент поддерживается в Windows 10 версии 2004 и более поздних версиях.

Элемент msix должен находиться в пространстве urn:schemas-microsoft-com:msix.v1имен. Он содержит атрибуты, показанные в следующей таблице.

Атрибут Описание
publisher Описывает сведения о издателе. Это значение должно соответствовать атрибуту Publisher в элементе Identity в манифесте пакета упаковаемого приложения с внешним расположением.
имя пакета Описывает содержимое пакета. Это значение должно соответствовать атрибуту Name в элементе Identity в манифесте пакета упаковаемого приложения с внешним расположением.
applicationId Уникальный идентификатор приложения. Это значение должно соответствовать атрибуту Id в элементе Application в манифесте пакета упаковаемого приложения с внешним расположением.
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <assemblyIdentity version="1.0.0.0" name="Contoso.PhotoStoreApp"/>
  <msix xmlns="urn:schemas-microsoft-com:msix.v1"
          publisher="CN=Contoso"
          packageName="ContosoPhotoStore"
          applicationId="ContosoPhotoStore"
        />
</assembly>

кучиType

Переопределяет реализацию кучи по умолчанию для api кучи Win32 для использования.

  • Значение SegmentHeap указывает, что куча сегментов будет использоваться. Кучи сегментов — это современная реализация кучи, которая, как правило, снижает общее использование памяти. Этот элемент поддерживается в Windows 10 версии 2004 (сборка 19041) и более поздних версий.
  • Все остальные значения игнорируются.

Этот элемент не имеет атрибутов.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2020/WindowsSettings">
      <heapType>SegmentHeap</heapType>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

поддерживаемыеarchitectures

Для исполняемых файлов .NET Framework только для IL указывает список архитектур собственного процессора, с которым совместимо приложение. Может содержать одно или несколько следующих значений, разделенных пробелами:

  • amd64
  • arm64

Этот элемент не имеет атрибутов.

Этот элемент поддерживается в Windows 11 версии 24H2 и более поздних версиях.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2024/WindowsSettings">
      <supportedArchitectures>amd64 arm64</supportedArchitectures>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

trustInfo

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

Запрошенный уровень выполнения указывается с атрибутом уровнязапрошенного элемента TrustInfo . Допустимые значения для уровня :

Ценность Описание
AsInvoker Приложение выполняется на том же уровне разрешений, что и запущенный процесс. Вы можете повысить уровень разрешений приложения, нажав кнопку "Запуск от имени администратора".
requireAdministrator Приложение выполняется с помощью разрешений администратора. Пользователь, который запускает приложение, должен быть членом группы "Администраторы". Если открытие не выполняется с правами администратора, система запрашивает учетные данные.
самый высокий уровеньAvailable Приложение выполняется на самом высоком уровне разрешений, который он может. Если пользователь, который запускает приложение, является членом группы "Администраторы", этот параметр совпадает с параметром level="requireAdministrator". Если самый высокий доступный уровень разрешений превышает уровень открывающего процесса, система запрашивает учетные данные.

Настройте уровень, чтобы highestAvailable убедиться, что приложение будет успешно работать как с пользователями, которые являются членами группы администраторов, так и с теми, кто не является. Если приложение может работать только с административным доступом к системе, то пометка приложения с запрошенным уровнем requireAdministrator выполнения гарантирует, что система определяет эту программу как административное приложение и выполняет необходимые действия по повышению прав.

По умолчанию компоновщик Visual C++ внедряет фрагмент UAC в манифест приложения с уровнем asInvokerвыполнения.

Элемент запрошенногоExecutionLevel также имеет необязательный атрибут uiAccess. Задайте для этого значения, true если приложение будет обходить уровни защиты пользовательского интерфейса и вводить входные данные в окна с более высоким разрешением на рабочем столе. Задайте для этого атрибута true только для приложений специальных возможностей пользовательского интерфейса. По умолчанию — false. Дополнительные ограничения параметров политики безопасности могут быть применены, см. в статье "Управление учетными записями пользователей": только приложения UIAccess с повышенными привилегиями, установленные в безопасных расположениях. Дополнительные сведения см. в разделе "Вопросы безопасности" для вспомогательных технологий.

Указание запрошенного узлаExecutionLevel отключает виртуализацию файлов и реестра. Если вы хотите использовать виртуализацию файлов и реестра для обратной совместимости, опустите запрошенный узелExecutionLevel .

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

Пример

Ниже приведен пример манифеста приложения для приложения с именем MySampleApp.exe. Приложение использует сборку SampleAssembly параллельно.

<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity type="win32" name="MyOrganization.MyDivision.MySampleApp" version="6.0.0.0" processorArchitecture="*" />
   <dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32" name="Proseware.Research.SampleAssembly" version="6.0.0.0" processorArchitecture="*" publicKeyToken="0000000000000000" />
      </dependentAssembly>
   </dependency>
   <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
      <application>
         <!-- Windows 10 and Windows 11 -->
         <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
         <!-- Windows 8.1 -->
         <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
         <!-- Windows 8 -->
         <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
         <!-- Windows 7 -->
         <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
         <!-- Windows Vista -->
         <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
      </application>
   </compatibility>
</assembly>