应用功能声明
发布时间:2026-08-14 | 浏览:1
访问此页面需要授权。 可以尝试 登录 或 更改目录 。
访问此页面需要授权。 可以尝试 更改目录 。
应用功能适用于哪些类型的应用?
大多数 应用功能方案仅与具有包标识的应用相关。 特定于 AppContainer 的功能要求适用于在 AppContainer 中运行的应用,例如打包为 MSIX 的 UWP 应用。 打包为 MSIX 的 WinUI 3(Windows 应用 SDK) 桌面应用通常在限制性较低的沙盒(完全信任)中运行,而不是在 AppContainer 中运行,除非你使用 uap10:TrustLevel="appContainer" 显式将其配置为 AppContainer 应用。 还可以提供 Win32 桌面应用包标识,并将其配置为 AppContainer 应用。 因此,功能适用于打包的应用,但具体要求取决于你的应用类型。
有关打包和 程序包标识符 的详细信息,请参阅 部署概述 。
有关 AppContainer 应用的详细信息,请参阅 适用于旧应用的 AppContainer 。
属于 AppContainer 应用的桌面应用可以通过其应用程序包清单中的 uap10:TrustLevel="appContainer" 进行识别(有关详细信息,请参阅 应用程序 (Windows 10) )。 同样,具有 mediumIL (中等完整性级别)的桌面应用具有 uap10:TrustLevel="mediumIL" 。 中等 IL 应用(也称为 完全信任应用 )无法在 AppContainer 中运行。
InternetClient 和 enterpriseAuthentication 功能使应用程序能够执行用户已经可以执行的某些操作。 因此,这些是仅适用于 AppContainer 应用的功能示例。 相反,中等 IL 应用已作为用户运行,因此,此类应用无需这些功能即可执行这些操作。
但在某些情况下,中等 IL 应用也应该声明功能。 事实上,中等 IL 应用 需要 声明 runFullTrust 受限功能。 并且,为了能够注册进程外 COM 服务器以进行进程间通信 (IPC),打包的应用需要 runFullTrust 。 此功能称为“ 打包 COM ”(有关详细信息,请参阅博客文章 COM 服务器和 OLE 文档对桌面桥的支持 )。
有关适用范围包含中等 IL 应用的其他方案的信息,请参阅本主题中的 隐私敏感功能 。
你只需生成包,即可确定你的应用程序包清单是否需要 runFullTrust 。 Makeappx.exe 将验证架构,如果 runFullTrust 未声明,但需要它,则你会看到详细的错误消息,包括问题是什么,以及行号和列号。
如果你要访问某些 API 或资源(如图片或音乐)或者设备(如摄像头或麦克风),那么必须在 Windows 应用的 程序包清单 中声明相应的应用功能
可以使用 Visual Studio 中的 清单设计器 来声明常用功能,也可以手动添加它们。 有关详细信息,请参阅 如何在程序包清单中指定功能 。 请务必了解,当客户从 Microsoft Store 获取你的应用时,系统会告知他们该应用声明的所有功能。 因此,请务必仅声明应用所需的功能。
敏感资源 是可以访问用户个人数据或花费用户资金的资源。 在本主题中,向应用提供对 敏感资源 的访问权限的功能会在 功能方案 列中用星号 (*) 标出。
隐私敏感功能会向操作系统 (OS) 和用户发出信号,表露应用打算执行的操作。 由于向您的应用用户传达这一信号是有益的,我们建议,即使对于中等 IL 应用,也声明隐私敏感功能(其中应用程序标识用于提供个人隐私开关)。 此举允许这些应用程序在安装后即可在由 Windows 设置 管理的隐私设置页面中进行管理,而不是等到这些应用访问隐私敏感资源时再进行管理。
这些隐私设置使用户能够动态控制对敏感资源的访问权限。 因此,让你的应用不会假定敏感资源始终可用,这一点很重要。 若要详细了解如何访问敏感资源,请参阅 安全性 。
适用于大多数常见应用场景的 常用功能 。
允许你的应用访问内部和外围设备的 设备功能 。
需要获得批准才能提交到 Microsoft Store 和/或通常只适用于 Microsoft 及某些合作伙伴的 受限功能 。
可以在应用程序包清单中使用 Capability 元素来指定通用功能。 这些功能适用于最常见的应用场景。
在程序包清单的“功能”节点下,所有 Capability 元素都必须位于任何 CustomCapability 和 DeviceCapability 元素前面 。
通过电话线发出呼叫并显示系统拨号器,而不提示用户。
允许用户选择的垃圾邮件筛选器应用设置并检查阻止列表和呼叫来源信息。
在应用程序清单中启用 lowLevelDevices 功能:
在 INF 中或者在驱动程序中调用 WdfDeviceAssignInterfaceProperty() ,将设备接口标记为“ 受限 ”。
Windows.System.RemoteSystems 命名空间
Windows.System.RemoteLauncher 类
AppServiceConnection.OpenRemoteAsync 方法
设备功能允许你的应用访问外围设备和内部设备。 可在应用程序包清单中使用 DeviceCapability 元素指定设备功能。 此元素可能需要其他子元素,并且某些设备功能需要手动添加到该程序包清单。 有关详细信息,请参阅 如何在程序包清单中指定设备功能 和 DeviceCapability Schema reference 。
在程序包清单中的 Capabilities 元素下,可以有多个 DeviceCapability 元素。 所有 DeviceCapability 元素都必须位于任何 Capability 和 CustomCapability 元素之后。
如果你的应用声明了任何受限功能,则必须在 应用提交过程 中提供信息,并在获得批准后将应用发布到 Microsoft Store。 你将在提交的 提交选项 页面提供此信息,说明你的应用如何使用其声明的每个受限功能。
受限功能专用于非常特定的场景。 这些功能的使用受严格限制,且受应用商店的其他上架政策和评审的约束。 请注意,在旁加载声明受限功能的应用之前,不需要获得批准。 只有在将此类应用提交到 Microsoft Store 时才需要获得批准。
除非你的应用确实需要受限功能,否则请勿声明此类功能。 在某些情况下,这些功能是必需的或适宜的,如在使用双因素身份验证开展银行业务时,用户提供带数字签名的智能卡确认其身份。 其他应用可能主要针对企业客户而设计,并可能需要访问一些必须使用用户的域凭据才能访问的企业资源。
若要声明受限功能,请修改 应用程序包清单 源文件 ( Package.appxmanifest )。 添加 xmlns:rescap XML 命名空间声明,并在声明受限功能时使用 rescap 前缀。 例如,下面演示了如何声明 appCaptureSettings 功能。
在包清单的 功能 节点下,所有受限功能元素必须位于任何 CustomCapability 和 DeviceCapability 元素之前。
以前,需要联系支持部门才能获得使用某项功能的批准。 现在,可以在 合作伙伴中心 中作为 提交过程 的一部分提供此信息。
在你为提交上传程序包时,我们将检测是否声明了任何受限功能。 如果我们这样做,您需要在 提交选项 页面上提供有关您的产品如何使用每项功能的详细信息。 请务必提供尽可能详细的信息,以帮助我们了解你的产品需要声明该功能的原因。 请注意,这可能会给你的提交增加一些额外的时间来完成认证过程。
在认证过程中,我们的测试人员将审核你提供的信息,以确定是否批准你的提交使用该功能。 请注意,这可能会给你的提交增加一些额外的时间来完成认证过程。 如果我们批准你使用该功能,你的应用将继续进行认证过程的其余部分。 你向应用提交更新时,通常不必重复功能审批流程(除非你声明了其他功能)。
如果我们不批准你使用该功能,你的提交将无法通过认证,我们将在认证报告中提供反馈。 然后,可以选择创建新的提交并上传未声明该功能的包,或者解决与该功能的使用有关的任何问题并在新提交中申请批准(如果适用)。
如果你的提交在合作伙伴中心中使用了开发沙盒(例如,任何与 Xbox Live 集成的游戏都是这种情况),则必须提前申请批准,而不是在“提交选项”页面上提供信息。 如果通过 ID@Xbox 或托管合作伙伴将游戏发布到 Xbox,可以提前请求批准。 为此,请与 Microsoft 客户团队联系。
团队需要简要说明你是如何使用该功能的,以及为什么它对你的产品是必要的。 如果不提供所有必要信息,将拒绝你的请求。 还可能会要求你提供更多信息。 请注意,该流程通常需要 5 个工作日或更长时间,因此请提前提交请求。
如果你倾向于在开始提交之前先确认自己已被批准使用受限功能,也可以使用此方法来请求批准(而不是在提交期间提供此信息),而不管是否使用开发沙盒。
下表列出了受限功能。 可以按照上述过程为你提交到 Microsoft Store 的应用中的此类功能申请批准。
在这些受限功能中,有一些功能只在极其特殊和有限的情况下才获准在提交到 Microsoft Store 的应用中使用。 这些功能在下表中做了特殊标注。 如果你打算通过 Microsoft Store 分发你的应用,建议不要在应用中声明这些功能。
FileProtectionManager
DataProtectionManager
ProtectionPolicyManager
FileOpenPicker 用于打开现有文件。
FileSavePicker 用于保存新文件。
FolderPicker 用于选择要从中打开/保存其他文件的文件夹。
上面的 受限功能 部分介绍了可用于请求批准以使用自定义功能的相同功能批准过程。 嵌入式 SIM API 是需要自定义功能的 API 的示例。 如果你只需要以开发人员模式在本地运行应用程序,则无需自定义功能。 但你需要它将应用发布到 Microsoft Store,或在开发人员模式之外运行它。
如果你有 Windows 技术部客户经理 (TAM),可以与 TAM 协作以请求访问。 要了解更多详细信息,请 联系 Microsoft TAM 。
若要声明自定义功能,请修改 应用程序包清单 源文件 ( Package.appxmanifest )。 添加 xmlns:uap4 XML 命名空间声明,并在声明自定义功能时使用 uap4 前缀。 下面是一个示例。
在程序包清单的 Capabilities 节点下,所有 CustomCapability 元素都必须位于任何 Capability 元素后面,且位于任何 DeviceCapability 元素前面。
如何在程序包清单中指定设备功能
Windows developer
想要尝试使用 Ask Learn 阐明或指导你完成本主题?
Last updated on 2026-07-01