如何在所有用户的 UWP10 中获取已安装的包?

How to get installed packages in UWP10 across all users?

我正在开发一个 UWP,我需要在其中获取系统上所有已安装软件包的列表,是否有任何 API 用于此?

Here 是执行此操作的示例。它也应该适用于 UWP 应用程序。

这些是您需要的行:

Windows.Management.Deployment.PackageManager packageManager = new Windows.Management.Deployment.PackageManager();
IEnumerable<Windows.ApplicationModel.Package> packages = (IEnumerable<Windows.ApplicationModel.Package>) packageManager.FindPackages();

然后您可以遍历包并获取所需的信息。

现在这段代码有一个问题:这不能 运行 在 UWP 应用程序中(参见 here)。您将获得拒绝访问异常。现在一个选项是将此代码外包给允许执行此操作并从 UWP 应用程序触发它的某个组件。

(本可以作为评论发布的,但我的声誉仍然很低)

以上代码对我来说没有立即起作用。我不得不在 Package.appxmanifest 中添加一个 restricted capability。 必须在文件顶部添加新的命名空间:

xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"`

<rescap:Capability Name="packageQuery" />

添加到 Capabilties 标签。您可能需要根据 this 信息将 'rescap' 命名空间添加到可忽略列表中。