应用程序清单

应用程序清单(也称为并行应用程序清单或融合清单)是一个 XML 文件,该文件描述并标识应用程序在运行时应绑定到的共享和专用并行程序集。 这些程序集的版本应与测试应用程序时使用的程序集版本相同。 应用程序清单还可能描述应用程序专用的文件的元数据。

有关 XML 架构的完整列表,请参阅清单文件架构

应用程序清单具有以下元素和属性。

元素 特性 必须
assembly
manifestVersion
noInherit
assemblyIdentity
type
name
language
processorArchitecture
version
publicKeyToken
兼容性
application
supportedOS
Id
maxversiontested
Id
dependency
dependentAssembly
file
name
hashalg
hash
activatableClass
name
threadingModel
activeCodePage
autoElevate
disableTheming
disableWindowFiltering
dpiAware
dpiAwareness
gdiScaling
highResolutionScrollingAware
longPathAware
printerDriverIsolation
ultraHighResolutionScrollingAware
msix
heapType
supportedArchitectures
trustInfo

文件位置

如果可能,应将应用程序清单作为资源嵌入应用程序 .exe 文件或 .dll。 如果无法执行此操作,则可以将应用程序清单文件放置在与 .exe.dll 相同的目录中。

有关详细信息,请参阅安装并行程序集

文件名

按照惯例,应用程序清单与应用的可执行文件应同名,并附加 .manifest 扩展名。

例如,引用 example.exeexample.dll 的应用程序清单应使用以下文件名语法(如果资源 ID 为 1,则可以省略语法的 <resource ID> 段。

example.exe.<resource ID>.manifest

example.dll.<resource ID>.manifest

元素

元素和属性的名称区分大小写。 元素和属性的值不区分大小写,但类型属性的值除外。

assembly

容器元素。 其第一个子元素必须是 noInherit 或 assemblyIdentity 元素。 必需。

assembly 元素必须位于命名空间 urn:schemas-microsoft-com:asm.v1 中。 assembly 的子元素还必须通过继承或标记位于此命名空间中。

assembly 元素具有下列属性

属性 说明
manifestVersion manifestVersion 属性必须设置为 1.0

noInherit

在应用程序清单中包含此元素,以使用“非继承”标志设置从清单生成的激活上下文。 如果未在激活上下文中设置此标志,并且激活上下文处于活动状态,则此标志会被同一进程中的新线程、窗口、窗口过程和异步过程调用继承。 设置此标志可防止新对象继承活动上下文。

noInherit 元素是可选的,通常省略。 大多数程序集无法正确使用非继承激活上下文,因为程序集必须显式设计为管理其自己的激活上下文的传播。 使用 noInherit 元素要求应用程序清单引用的任何依赖程序集在其程序集清单中都具有 noInherit 元素。

如果在清单中使用 noInherit,则它必须是 assembly 元素的第一个子元素。 assemblyIdentity 元素应紧接在 noInherit 元素之后。 如果未使用 noInherit,则 assemblyIdentity 必须是 assembly 元素的第一个子元素。 noInherit 元素没有子元素。 它不是程序集清单中的有效元素。

assemblyIdentity

作为 assembly 元素的第一个子元素,assemblyIdentity 描述并唯一标识拥有此应用程序清单的应用程序。 作为 dependentAssembly 元素的第一个子元素,assemblyIdentity 描述应用程序所需的并行程序集。 请注意,应用程序清单中引用的每个程序集都需要一个与引用程序集自己的程序集清单中的 assemblyIdentity 完全匹配的 assemblyIdentity

assemblyIdentity 元素具有下列属性。 它没有子元素。

Attribute 说明
type 指定应用程序或程序集类型。 此值必须为 win32 并且全部小写。 必需。
name 为应用程序或程序集提供唯一名称。 为名称使用以下格式:Organization.Division.Name。 例如,Microsoft.Windows.mysampleApp。 必需。
language 标识应用程序或程序集的语言。 如果应用程序或程序集特定于语言,请指定 DHTML 语言代码。 在供全球使用(中性语言)的应用程序的 assemblyIdentity 中,省略语言属性
在供全球使用(中性语言)的程序集的 assemblyIdentity 中,将语言的值设置为 *。 可选。
processorArchitecture 指定处理器。 有效值包括 x86amd64armarm64。 还可以指定 *,这可确保所有平台都成为目标。 可选。
version 指定应用程序或程序集版本。 使用由四部分构成的版本格式:mmmmm.nnnnn.ooooo.ppppp。 每个由句点分隔的部分可以包含 0-65535(含 0 和 65535)。 有关详细信息,请参阅程序集版本。 必需。
publicKeyToken 16 个字符的十六进制字符串,表示用于对应用程序或程序集进行签名的公钥的 SHA-1 哈希的最后 8 个字节。 用于对目录进行签名的公钥必须为 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>

兼容性

包含输入一个应用程序。 它不具有属性。 可选。 没有兼容性元素的应用程序清单默认与 Windows 7 上的 Windows Vista 兼容。

compatibility 元素必须位于命名空间 urn:schemas-microsoft-com:compatibility.v1 中。 compatibility 的子元素还必须通过继承或标记位于此命名空间中

application

包含至少一个 supportedOS 元素。 从 Windows 10 版本 1903 开始,它还可以包含一个可选的 maxversiontested 元素。 它不具有属性。 可选。

supportedOS

supportedOS 元素具有以下属性。 它没有子元素。

Attribute 描述
Id 将 Id 属性设置为 {e2011457-1546-43c5-a5fe-008deee3d3f0} 可使用 Vista 功能运行应用程序。 这可以使专为 Windows Vista 设计的应用程序能够在更高版本的操作系统上运行。
将 Id 属性设置为 {35138b9a-5d96-4fbd-8e2d-a2440225f93a} 可使用 Windows 7 功能运行应用程序
支持 Windows Vista、Windows 7 和 Windows 8 功能的应用程序不需要单独的清单。 在这种情况下,请为所有 Windows 操作系统添加 GUID。
有关 Windows 中 Id 属性行为的信息,请参阅 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-a2440225f93a} -> Windows 7 和 Windows Server 2008 R2
{e2011457-1546-43c5-a5fe-008deee3d3f0} -> Windows Vista 和 Windows Server 2008
可以在 Windows 7 或 Windows 8.x 上对此进行测试,方法是运行资源监视器 (resmon),转到 CPU 选项卡,右键单击列标签,“选择列...”,然后检查“操作系统环境”。 在 Windows 8.x 上,还可以在任务管理器 (taskmgr) 中找到此列。 此列的内容显示找到的最高值或默认值“Windows Vista”。

maxversiontested

maxversiontested 元素指定测试应用程序所针对的 Windows 版本,从应用程序支持的最低操作系统版本开始到最高版本。 可在此处找到完整的版本集。 此元素供使用 XAML 岛且未部署在 MSIX 包中的桌面应用程序使用。 Windows 10 版本 1903 及更高版本中支持此元素。

maxversiontested 元素具有以下属性。 它没有子元素。

Attribute 描述
Id 将 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

至少包含一个 dependentAssembly。 它不具有属性。 可选。

dependentAssembly

dependentAssembly 的第一个子元素必须是 assemblyIdentity 元素,用于描述应用程序所需的并行程序集。 每个 dependentAssembly 必须恰好位于一个依赖项内。 它不具有属性。

文件

指定应用程序专用的文件。 可选。

file 元素具有下表所示的属性

Attribute 描述
name 文件的名称。 例如 Comctl32.dll。 必需。
hashalg 用于创建文件的哈希的算法。 此值应为 SHA1。 可选。
hash 按名称引用的文件的哈希。 长度取决于哈希算法的十六进制字符串。 可选。

activatableClass

允许非打包桌面应用使用用户定义的 Windows 运行时 (WinRT) 组件。 Windows 10 版本 1903 及更高版本中支持此元素。 有关详细信息,请参阅此文章

activatableClass 元素必须位于命名空间 urn:schemas-microsoft-com:winrt.v1 中。

activatableClass 元素具有下列属性

属性 描述
name 指定可激活类的类标识符。 必需。
threadingModel 表示用于激活进程内服务器的单元线程模型。 有效值包括 bothSTAMTA。 有关详细信息,请参阅此文。 必需。
<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 代码页或特定区域设置的代码页,以实现旧版应用程序兼容性。 强烈建议新式应用程序使用 Unicode。 在 Windows 11 上,activeCodePage 还可以设置为值 Legacy 或区域设置名称,例如 en-US 或 ja-JP

  • 在配置为 UTF-8 系统活动代码页的计算机上,Legacy 会将进程还原到系统区域设置代码页。 如果系统区域设置没有定义的代码页,则将使用 Windows-1252/437。 Legacy 代码页设置仅在融合清单中受支持,并且仅从 Windows 11 开始支持
  • 提供 en-US 等区域设置名称时,将为此区域设置代码页适当地设置进程代码页。 例如,en-US 为 Windows-1252 和 437,ja-JP 为 932。

此元素首次添加于 Windows 10 版本 1903(2019 年 5 月更新)中。 你可以声明此属性,并以早期 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 Publisher 进行数字签名。 供内部使用。

disableTheming

指定是否禁用为 UI 元素提供主题。 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:如果存在 dpiAwareness 元素,则忽略 dpiAware 元素。 如果要为 Windows 10 版本 1607 指定与早期版本的操作系统不同的行为,则可以在清单中包含这两个元素。

下表描述了基于 dpiAware 元素的存在及其包含的文本而产生的行为。 元素中的文本不区分大小写。

dpiAware 元素的状态 说明
不存在 默认情况下,当前进程无法感知 dpi。 可以通过调用 SetProcessDpiAwarenessSetProcessDPIAware 函数以编程方式更改此设置。
包含“true” 当前进程可感知系统 dpi。
包含“false” Windows Vista、Windows 7 和 Windows 8:行为与 dpiAware 不存在时相同
Windows 8.1 和 Windows 10:当前进程无法感知 dpi,并且无法通过调用 SetProcessDpiAwarenessSetProcessDPIAware 函数以编程方式更改此设置。
包含“true/pm” Windows Vista、Windows 7 和 Windows 8:当前进程可感知系统 dpi
Windows 8.1 和 Windows 10:当前进程可按显示器感知 dpi
包含“per monitor” 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,并且无法通过调用 SetProcessDpiAwarenessSetProcessDPIAware 函数以编程方式更改此设置。

有关 dpi 感知设置的详细信息,请参阅 Windows 上的高 DPI 桌面应用程序开发

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 将替代 dpiAwareness 元素。 如果要为 Windows 10 版本 1607 指定与早期版本的操作系统不同的行为,则可以在清单中包含这两个元素。

dpiAwareness 元素可以包含单个项或逗号分隔项的列表。 在后一种情况下,将使用操作系统识别的列表中的第一个(最左)项。 通过这种方式,可以指定未来 Windows 操作系统版本支持的不同行为。

下表描述了基于 dpiAwareness 元素的存在及其最左侧已识别项中包含的文本而产生的行为。 元素中的文本不区分大小写。

dpiAwareness 元素状态 说明
元素不存在 dpiAware 元素指定进程是否感知 dpi
不包含已识别项 默认情况下,当前进程无法感知 dpi。 可以通过调用 SetProcessDpiAwarenessSetProcessDPIAware 函数以编程方式更改此设置。
第一个已识别项是“system” 当前进程可感知系统 dpi。
第一个已识别项是“permonitor” 当前进程可按显示器感知 dpi。
第一个已识别项是“permonitorv2” 当前进程使用 per-monitor-v2 dpi 感知环境。 仅在 Windows 10 版本 1703 或更高版本上识别此项。
第一个已识别项是“unaware” 当前进程无法感知 dpi。 无法通过调用 SetProcessDpiAwarenessSetProcessDPIAware 函数以编程方式更改此设置。

有关此元素支持的 dpi 感知设置的详细信息,请参阅 DPI_AWARENESSDPI_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 应用程序非常有用。

非矢量图形(例如位图、图标或工具栏)无法通过此元素缩放。 此外,由应用程序动态构建的位图中出现的图形和文本也无法通过此元素缩放。

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 打印服务的可靠性。 从 Windows 7 和 Windows Server 2008 R2 开始支持打印机驱动程序隔离。 应用可以在其应用部件清单 (manifest) 中声明打印机驱动程序隔离,以将自身与打印机驱动程序隔离并提高其可靠性。 也就是说,如果打印机驱动程序出错,应用不会崩溃。

<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 中。 它具有下表所示的属性。

Attribute 说明
publisher 描述发布者信息。 此值必须与具有外部位置的打包应用的包清单中 Identity 元素中的 Publisher 属性匹配
packageName 描述程序包的内容。 此值必须与具有外部位置的打包应用的包清单中 Identity 元素中的 Name 属性匹配。
applicationId 应用程序的唯一标识符。 此值必须与具有外部位置的打包应用的包清单中 Application 元素中的 Id 属性匹配。
<?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>

heapType

替代要使用的 Win32 堆 API 的默认堆实现。

  • 值 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>

supportedArchitectures

对于纯 IL .NET 可执行文件,指定与应用程序兼容的本机处理器体系结构列表。 可以包含以下一个或多个由空格分隔的值:

  • 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 元素的 requestExecutionLevel 子代的 level 属性指定。 允许的 level 值为

说明
asInvoker 应用程序在启动应用程序的进程所在的同一权限级别运行。 可以通过选择“以管理员身份运行”将应用程序提升到更高的权限级别。
requireAdministrator 应用程序使用管理员权限运行。 启动应用程序的用户必须是管理员组的成员。 如果打开的进程不是以管理权限运行的,则系统会提示输入凭据。
highestAvailable 应用程序在可能的最高权限级别运行。 如果启动应用程序的用户是管理员组的成员,则此选项与 level="requireAdministrator" 相同。 如果最高可用权限级别高于打开进程的级别,系统会提示输入凭据。

将级别设置为 highestAvailable 可确保应用程序能够在管理员组成员和非管理员组成员的用户中成功运行。 如果应用程序只能通过系统的管理访问权限运行,则使用 requireAdministrator 的请求执行级别标记应用,可以确保系统将此程序标识为管理应用并执行必需的提升步骤。

默认情况下,Visual C++ 链接器会将 UAC 片段嵌入具有 asInvoker 执行级别的应用程序清单中。

requestsExecutionLevel 元素还有一个可选属性 uiAccess。 如果希望应用程序绕过用户界面保护级别并将输入引导到桌面上的更高权限窗口,请将此值设置为 true。 仅针对用户界面辅助功能应用程序将此属性设置为 true。 默认为 false。 可能会应用安全策略设置的其他限制,请参阅用户帐户控制:仅提升安装在安全位置的 UIAccess 应用程序。 有关详细信息,请参阅辅助技术的安全注意事项

指定 requestedExecutionLevel 节点将禁用文件和注册表虚拟化。 如果要利用文件和注册表虚拟化实现向后兼容性,则省略 requestedExecutionLevel 节点

<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>