在Windows 8中获取已安装的Windows Store应用程序的本地化名称

14

我想在Windows 8桌面应用程序中,将所有已安装的Windows Store应用程序本地化显示名称填充到ListBox中。我尝试过以下代码:

string Apps = Interaction.Environ("ProgramFiles") + "\\WindowsApps";
foreach ( App in IO.Directory.GetDirectories(Apps)) {
            XmlDocument xml = new XmlDocument();
            xml.LoadXml(My.Computer.FileSystem.ReadAllText(App + "\\AppxManifest.xml"));
            lbApps.Items.Add(xml.GetElementsByTagName("DisplayName")(0).InnerText);
 }

但是它会累加未安装的ms-resource字符串和默认应用程序。

编辑:我发现所有已安装的应用程序在%LocalAppData%\Microsoft\Windows\Application Shortcuts中都有它们的快捷方式,但这些快捷方式没有本地化的名称,并且打开时无法使用。

3个回答

1

这不是我想要做的。请完整阅读我的问题。 - Elmo

1
我认为没有Windows Runtime API可以将这个特定信息传递回应用程序。应用程序的所有者首先需要在Appx清单中提供该信息。您可以查看[http://msdn.microsoft.com/en-us/library/Hh446622],希望对您有所帮助。

我的应用程序是桌面应用程序,因此我不需要WinRT API。 - Elmo

1

不要直接解析AppxManifest文件,而是使用PackageManager类。

在MSDN上,有很多示例演示如何收集有关已安装应用程序包的各种内容,包括按用户SID枚举应用程序包示例


我想要本地化的名称,而不是包名。 - Elmo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接