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

如何无需try-catch检查UWP桌面扩展是否存在以验证FullTrustProcess调用?

检测UWP桌面扩展是否存在(无需Try-Catch)

当然有办法!你可以直接通过UWP的Package API来检查当前应用是否包含FullTrustProcess扩展,完全不需要依赖try-catch块。核心思路是读取应用包的声明配置——毕竟桌面扩展必须在Package.appxmanifest里明确注册,我们可以直接从应用包元数据中获取这些信息。

具体实现步骤如下:

  • 获取当前应用的Package实例:Package.Current
  • 遍历Package的Extensions集合,筛选出类型为windows.fullTrustProcess的扩展
  • 验证该扩展是否指定了有效的可执行文件路径(这是桌面扩展生效的必要条件)

以下是完整的C#代码示例:

using Windows.ApplicationModel;

public bool IsFullTrustExtensionPresent()
{
    var package = Package.Current;
    // 遍历所有扩展,查找FullTrustProcess类型的
    foreach (var extension in package.Extensions)
    {
        if (extension.Kind == "windows.fullTrustProcess")
        {
            // 检查扩展是否包含Executable配置(桌面扩展必须指定)
            var executable = extension.Properties["Executable"] as string;
            return !string.IsNullOrEmpty(executable);
        }
    }
    return false;
}

使用这个方法的话,你可以在调用FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync()之前,先调用IsFullTrustExtensionPresent()来验证可行性:

if (IsFullTrustExtensionPresent())
{
    await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();
}
else
{
    // 处理扩展不存在的情况,比如提示用户或者走其他逻辑
}

为什么这个方法可靠?

因为我们直接读取的是应用包的元数据——这些信息是应用安装时就确定的,不会因为运行时状态变化而改变。相比try-catch依赖异常捕获,这种方式更高效,也更符合“提前验证”的编程思路。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:32:11