如何无需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
相关产品推荐
相关产品推荐

