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

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

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

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

Элемент Атрибуты Обязательное поле
сборка Да
manifestVersion Да
noInherit No
assemblyIdentity Да
type Да
name Да
language No
processorArchitecture No
version Да
Publickeytoken No
compatibility No
application No
поддерживаемые ОС No
Id Да
maxversiontested No
Id Да
зависимость No
зависимыйAssembly No
file No
name Да
hashalg No
hash No
активируемый Класс No
name Да
threadingModel Да
activeCodePage No
autoElevate No
disableTheming No
disableWindowFiltering No
dpiAware No
dpiAwareness No
gdiScaling No
highResolutionScrollingAware No
longPathAware No
printerDriverIsolation No
ultraHighResolutionScrollingAware No
msix No
кучиType No
поддерживаемыеarchitectures No
trustInfo No

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

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

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

Имя файла

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

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

example.exe.<resource ID.manifest>

example.dll.<resource ID.manifest>

Элементы

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

сборка

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

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

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

Атрибут Description
manifestVersion Атрибут manifestVersion должен иметь значение 1.0.

noInherit

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

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

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

assemblyIdentity

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

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

Атрибут Описание
type Указывает тип приложения или сборки. Значение должно быть win32 и все в нижнем регистре. Обязательный.
name Уникальное имя приложения или сборки. Используйте следующий формат для имени: Organization.Division.Name Например, Microsoft.Windows.mysampleApp. Обязательный.
language Определяет язык приложения или сборки. Если приложение или сборка зависят от языка, укажите код языка DHTML. В assemblyIdentity приложения, предназначенного для использования во всем мире (нейтрального языка), опустите атрибут языка.
В assemblyIdentity сборки, предназначенной для использования во всем мире (нейтрального языка), задайте значение языка*. Необязательно.
processorArchitecture Задает процессор. Допустимые значения: x86, amd64, arm и arm64. Можно также указать *, что гарантирует, что все платформы предназначены. Необязательно.
version Указывает версию приложения или сборки. Используйте формат 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. Необязательно.
hash Хэш файла, на который ссылается имя. Шестнадцатеричная строка длины в зависимости от хэш-алгоритма. Необязательно.

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

Позволяет непакуемым классическим приложениям использовать пользовательские компоненты среда выполнения 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 также может быть задано значение Legacy или имя языкового стандарта, например 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 Description
Absent Текущий процесс не знает по умолчанию. Этот параметр можно изменить программным способом, вызвав функцию 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 : Description
Элемент отсутствует Элемент 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имен. Он содержит атрибуты, показанные в следующей таблице.

Атрибут Description
publisher Описывает сведения о издателе. Это значение должно соответствовать атрибуту Publisher в элементе Identity в манифесте пакета упаковаемого приложения с внешним расположением.
PackageName Описывает содержимое пакета. Это значение должно соответствовать атрибуту 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

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

  • 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 Приложение выполняется на том же уровне разрешений, что и запущенный процесс. Вы можете повысить уровень разрешений приложения, нажав кнопку "Запуск от имени" Администратор istrator.
require Администратор istrator Приложение выполняется с помощью разрешений администратора. Пользователь, который запускает приложение, должен быть членом группы Администратор istrators. Если открытие не выполняется с правами администратора, система запрашивает учетные данные.
самый высокий уровеньAvailable Приложение выполняется на самом высоком уровне разрешений, который он может. Если пользователь, который запускает приложение, является членом группы Администратор istrators, этот параметр совпадает с параметромlevel="requireAdministrator". Если самый высокий доступный уровень разрешений превышает уровень открывающего процесса, система запрашивает учетные данные.

Настройте уровень, чтобы highestAvailable убедиться, что приложение будет успешно работать с пользователями, которые являются членами группы Администратор istrator и тех, кто не является. Если приложение может работать только с административным доступом к системе, то пометка приложения с запрошенным уровнем 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>