You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行时以编程方式读取UWP应用清单中的已启用功能

在UWP运行时获取已启用的应用功能

刚好我之前做UWP SDK开发时也碰到过这个问题——直接读取Package.appmanifest文件在运行时根本走不通,毕竟UWP的沙箱限制了对这类文件的直接访问。不过微软已经提供了官方的运行时API,可以直接获取当前应用已启用的所有功能,完全不需要手动解析XML。

下面是具体的实现步骤和代码示例:

核心思路

利用Windows.ApplicationModel.Package类的相关属性,直接从系统获取当前应用已注册的功能信息,这些信息就是清单里声明并启用的内容。

代码实现(C#)

using Windows.ApplicationModel;
using System.Diagnostics;

// 获取当前应用的Package实例
var currentPackage = Package.Current;

// 获取所有已启用的功能集合
var enabledCapabilities = currentPackage.Capabilities;

// 遍历并处理每个功能
foreach (var capability in enabledCapabilities)
{
    // 功能的官方标识名称(比如"internetClient"、"location")
    string capabilityId = capability.Name;
    // 本地化后的功能显示名称
    string displayName = capability.DisplayName;

    // 这里可以根据你的SDK需求,将这些信息返回或记录
    Debug.WriteLine($"已启用功能:{capabilityId} | 显示名称:{displayName}");
}

额外说明

  • 区分功能类型:如果需要区分功能的类别(比如设备功能、文件访问功能等),可以使用capability.Kind属性,它是PackageCapabilityKind枚举,包含Device、Internet、MusicLibrary等多种类型。
  • 受限功能支持:对于需要额外授权的受限功能(比如enterpriseAuthentication),只要应用清单里已经声明并通过审核,这个API也能正常获取到。
  • 沙箱安全:这个方法完全符合UWP的沙箱规则,不需要申请额外的文件访问权限,非常适合SDK集成使用。

内容的提问来源于stack exchange,提问作者Greg Thatcher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 06:54:26