应用程序清单(也称为并行应用程序清单或 融合 清单)是一个 XML 文件,用于描述和标识应用程序应在运行时绑定到的共享和专用并行程序集。 这些应与用于测试应用程序的程序集版本相同。 应用程序清单还可能描述应用程序专用的文件的元数据。
有关 XML 架构的完整列表,请参阅 清单文件架构。
应用程序清单具有以下元素和属性。
元素 | 特性 | 必选 |
---|---|---|
集会 | 是的 | |
manifestVersion | 是的 | |
noInherit | 否 | |
assemblyIdentity | 是的 | |
类型 | 是的 | |
名字 | 是的 | |
语言 | 否 | |
processorArchitecture | 否 | |
版本 | 是的 | |
publicKeyToken | 否 | |
兼容性 | 否 | |
应用 | 否 | |
supportedOS | 否 | |
Id | 是的 | |
maxversiontested | 否 | |
Id | 是的 | |
屬地 | 否 | |
dependentAssembly | 否 | |
文件 | 否 | |
名字 | 是的 | |
hashalg | 否 | |
散 列 | 否 | |
activatableClass | 否 | |
名字 | 是的 | |
threadingModel | 是的 | |
activeCodePage | 否 | |
autoElevate | 否 | |
disableTheming | 否 | |
disableWindowFiltering | 否 | |
dpiAware | 否 | |
dpiAwareness | 否 | |
gdiScaling | 否 | |
highResolutionScrollingAware | 否 | |
longPathAware | 否 | |
printerDriverIsolation | 否 | |
ultraHighResolutionScrollingAware | 否 | |
msix | 否 | |
heapType | 否 | |
supportedArchitectures | 否 | |
trustInfo | 否 |
文件位置
如果可能,应将应用程序清单作为资源嵌入应用程序 .exe
文件或 .dll
. 如果无法执行此作,则可以将应用程序清单文件放置在与 .exe
或 .dll
相同的目录中。
有关详细信息,请参阅 安装并行程序集。
文件名
按照约定,应用程序清单应具有与应用的可执行文件相同的名称,扩展名 .manifest
将追加到其中。
例如,引用example.exe
或example.dll
应使用以下文件名语法的应用程序清单(如果资源 ID 为 1,则可以省略<语法的资源 ID> 段)。
example.exe。<资源 ID>。清单
example.dll。<资源 ID>。清单
元素
元素和属性的名称区分大小写。 元素和特性的值不区分大小写,类型特性的值除外。
集会
容器元素。 其第一个子元素必须是 noInherit 或 assemblyIdentity 元素。 必填。
程序集元素必须位于命名空间urn:schemas-microsoft-com:asm.v1
中。 程序集的子元素还必须通过继承或标记在此命名空间中。
程序集元素具有以下属性。
特征 | 说明 |
---|---|
manifestVersion |
manifestVersion 属性必须设置为 1.0 。 |
noInherit
在应用程序清单中包含此元素,以设置从清单生成的 激活上下文 ,并带有“no inherit”标志。 如果未在激活上下文中设置此标志,并且激活上下文处于活动状态,则会由同一进程、窗口、窗口过程和 异步过程调用中的新线程继承。 设置此标志可防止新对象继承活动上下文。
noInherit 元素是可选的,通常省略。 大多数程序集不能正确使用无继承激活上下文,因为程序集必须显式设计为管理其自己的激活上下文的传播。 noInherit 元素的使用要求应用程序清单引用的任何依赖程序集在其程序集清单中都有 noInherit 元素。
如果在清单中使用 noInherit ,则它必须是 程序集 元素的第一个子元素。 assemblyIdentity 元素应紧接在 noInherit 元素之后。 如果未使用 noInherit,assemblyIdentity 必须是程序集元素的第一个子元素。 noInherit 元素没有子元素。 它不是 程序集清单中的有效元素。
assemblyIdentity
作为 程序集 元素的第一个子元素, assemblyIdentity 描述并唯一标识拥有此应用程序清单的应用程序。 作为 dependentAssembly 元素的第一个子元素, assemblyIdentity 描述了应用程序所需的并行程序集。 请注意,应用程序清单中引用的每个程序集都需要与所引用程序集自己的程序集清单中的 assemblyIdentity 完全匹配的 assemblyIdentity。
assemblyIdentity 元素具有以下属性。 它没有子元素。
特征 | 说明 |
---|---|
类型 | 指定应用程序或程序集类型。 该值必须为 win32 小写和全部大小写。 必填。 |
名字 | 唯一命名应用程序或程序集。 对名称使用以下格式: Organization.Division.Name 例如,Microsoft.Windows.mysampleApp 。 必填。 |
语言 | 标识应用程序或程序集的语言。 如果应用程序或程序集特定于语言,请指定 DHTML 语言代码。 在用于全球使用(语言中性)的应用程序 的 assemblyIdentity 中,省略语言属性。 在用于全球使用的程序集的 assemblyIdentity 中(语言中性)将语言的值设置为 * 。 可选。 |
processorArchitecture | 指定处理器。 有效值包括x86 和 amd64 arm arm64 。 还可以指定 * ,这可确保所有平台都以目标为目标。 可选。 |
版本 | 指定应用程序或程序集版本。 使用由四部分构成的版本格式: 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 兼容性。
兼容性元素必须位于命名空间urn:schemas-microsoft-com:compatibility.v1
中。
兼容性的子元素也必须在此命名空间中,通过继承或标记。
应用程序
包含至少一个 受支持的OS 元素。 从 Windows 10 版本 1903 开始,它还可以包含一个可选的 maxversiontested 元素。 它没有属性。 可选。
supportedOS
支持的OS 元素具有以下属性。 它没有子元素。
特征 | 说明 |
---|---|
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 元素具有以下属性。 它没有子元素。
特征 | 说明 |
---|---|
Id | 将 Id 属性设置为 4 部分版本字符串,该字符串指定应用程序所测试的 Windows 的最大版本。 例如,Windows 10 版本 1903 的“10.0.18362.1”。 必填。 |
<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>
屬地
至少包含一个 dependentAssembly。 它没有属性。 可选。
dependentAssembly
dependentAssembly 的第一个子元素必须是一个 assemblyIdentity 元素,用于描述应用程序所需的并行程序集。 每个 dependentAssembly 必须正好位于一个 依赖项内。 它没有属性。
文件
指定应用程序专用的文件。 可选。
文件元素具有下表中显示的属性。
特征 | 说明 |
---|---|
名字 | 文件的名称。 例如,Comctl32.dll。 必填。 |
hashalg | 用于创建文件的哈希的算法。 此值应为 SHA1。 可选。 |
散 列 | 按名称引用的文件的哈希。 长度的十六进制字符串,具体取决于哈希算法。 可选。 |
activatableClass
允许非打包桌面应用使用用户定义的 Windows 运行时 (WinRT) 组件。 Windows 10 版本 1903 及更高版本中支持此元素。 有关详细信息,请参阅 本文。
activatableClass 元素必须位于命名空间urn:schemas-microsoft-com:winrt.v1
中。
activatableClass 元素具有以下属性。
特征 | 说明 |
---|---|
名字 | 指定可激活类的类标识符。 必填。 |
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 代码页,或选择特定区域设置的代码页,以便实现旧应用程序兼容性。 强烈建议新式应用程序使用 Unicode。 在 Windows 11 上, activeCodePage 也可以设置为 旧 版或区域设置名称,例如 en-US 或 ja-JP。
- 在配置为 UTF-8 系统活动代码页的计算机上, 旧版 会将进程还原到系统区域设置代码页。 如果系统区域设置没有定义的代码页,则将使用 Windows-1252/437。 旧版代码页设置仅在 Fusion 清单中受支持,并且仅从 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 发布服务器进行数字签名。 供内部使用。
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。 可以通过调用 SetProcessDpiAwareness 或 SetProcessDPIAware 函数以编程方式更改此设置。 |
包含“true” | 当前进程可识别系统 dpi。 |
包含“false” |
Windows Vista、Windows 7 和 Windows 8: 该行为与 dpiAware 不存在时的行为相同。 Windows 8.1 和 Windows 10: 当前进程不了解 dpi,不能通过调用 SetProcessDpiAwareness 或 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,不能通过调用 SetProcessDpiAwareness 或 SetProcessDPIAware 函数以编程方式更改此设置。 |
有关 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 将替代 dpiAware 元素。 如果要为 Windows 10 版本 1607 指定与早期版本的作系统不同的行为,则可以在清单中包含这两个元素。
dpiAwareness 元素可以包含单个项或逗号分隔项的列表。 在后一种情况下,将使用作系统识别的列表中的第一个(最左)项。 通过这种方式,可以指定将来 Windows作系统版本支持的不同行为。
下表描述了基于 dpiAwareness 元素的存在及其最左侧识别项中包含的文本导致的行为。 元素中的文本不区分大小写。
dpiAwareness 元素状态: | 说明 |
---|---|
元素不存在 | dpiAware 元素指定进程是否感知 dpi。 |
不包含已识别的项目 | 默认情况下,当前进程不了解 dpi。 可以通过调用 SetProcessDpiAwareness 或 SetProcessDPIAware 函数以编程方式更改此设置。 |
第一个识别的项目是“系统” | 当前进程可识别系统 dpi。 |
第一个识别的项是“permonitor” | 当前进程按监视器 dpi 感知。 |
第一个识别项为“permonitorv2” | 当前进程使用 per-monitor-v2 dpi 感知上下文。 仅在 Windows 10 版本 1703 或更高版本上识别此项。 |
第一个识别的项目是“不知道” | 当前进程不知道 dpi。 无法通过调用 SetProcessDpiAwareness 或 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 应用程序非常有用。
此元素无法缩放非矢量图形(如位图、图标或工具栏)。 此外,应用程序动态构造的位图中出现的图形和文本也不能由此元素缩放。 有关详细信息,请参阅 改进基于 GDI 的桌面应用中的高 DPI 体验。
可以通过使用DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED
值调用 SetThreadDpiAwarenessContext 或 SetProcessDpiAwarenessContext 函数以编程方式更改此设置。
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 中启动的打印机驱动程序隔离。 应用可以在其应用清单中声明打印机驱动程序隔离,以将自身与打印机驱动程序隔离,并提高其可靠性。 也就是说,如果打印机驱动程序出错,应用不会崩溃。
<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
中。 它具有下表中显示的属性。
特征 | 说明 |
---|---|
发行人 | 描述发布者信息。 此值必须与打包应用的包清单中的 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 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 元素的 requestedExecutionLevel 子代的 level 属性指定的。 允许的级别值为:
价值 | 说明 |
---|---|
asInvoker | 应用程序在启动应用程序的进程所在的同一权限级别运行。 可以通过选择“ 以管理员身份运行”将应用程序提升到更高的权限级别。 |
requireAdministrator | 应用程序使用管理员权限运行。 启动应用程序的用户必须是管理员组的成员。 如果打开过程未使用管理权限运行,系统会提示输入凭据。 |
highestAvailable | 应用程序在可以的最高权限级别运行。 如果启动应用程序的用户是 Administrators 组的成员,则此选项与 |
设置级别 highestAvailable
以确保应用程序成功与属于管理员组成员的用户和未运行的用户一起运行。 如果应用程序只能对系统具有管理访问权限,则使用请求的执行级别 requireAdministrator
标记应用,以确保系统将此程序标识为管理应用并执行必要的提升步骤。
默认情况下,Visual C++链接器将 UAC 片段嵌入到具有执行级别的 asInvoker
应用程序的清单中。
requestedExecutionLevel 元素还具有可选的属性 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>