6

我正在尝试用 C# 编写一段代码来查找机器上所有已安装的 Metro 应用程序。我遇到了以下帖子获取 Metro 应用程序列表并使用 PowerShell 在 Windows 8 中启动它们, 其中解释了从系统注册表获取此信息。这是获取列表的唯一可靠方法吗?有人知道其他方法吗?提前致谢

4

4 回答 4

7

感谢大家!为了使 PackageManager 代码正常工作,我必须执行以下操作

1) 将以下内容添加到 .csproj。

 <PropertyGroup>
   <TargetPlatformVersion>8.0</TargetPlatformVersion>
 </PropertyGroup>
 <Reference Include="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

2) 添加对 C:\Program Files (x86)\Windows Kits\8.0\References\CommonConfiguration\Neutral\Windows.winmd 的引用

完成上述操作后,我能够列出所有地铁套餐。

于 2013-08-13T16:09:36.840 回答
4

我希望我能发表评论……这是一个选择吗?

IEnumerable<Windows.ApplicationModel.Package> packages = 
        (IEnumerable<Windows.ApplicationModel.Package>)packageManager.FindPackagesForUser("");

http://msdn.microsoft.com/en-us/library/windows/apps/windows.management.deployment.packagemanager.aspx

于 2013-08-12T04:49:14.833 回答
1

您无法在 WinRT 应用程序中遍历 PC 中安装的所有包。在桌面和控制台应用程序中是可能的。有关详细信息,请参阅这些 MSDN 线程。

如何在 Metro App 中获取所有 Metro 应用列表?

如何在我的 Metro 应用程序中获取所有 Metro 风格的应用程序列表?

在这里执行相同的代码。

于 2013-08-12T06:33:21.857 回答
0

如果有人想知道如何packageManager在接受的答案中获取变量,您需要执行以下操作:

Windows.Management.Deployment.PackageManager packageManager = new Windows.Management.Deployment.PackageManager();

我想这属于评论,但我没有足够的声誉,对不起。

于 2019-07-07T19:40:43.187 回答