启动Windows 10商店应用程序

11
我想寻找一种方法,通过C#在Windows 10/8.1上启动/运行Windows商店应用程序。 我正在尝试运行的应用程序示例包括: 计算器 照片 设置
请注意:在Windows 10中,这些不再是标准的.exe文件,不能通过双击或调用Process.Start()来执行,因为它们现在是Windows商店应用程序。
我尝试使用IApplicationActivationManager,但是我无法找到具有如何使用它的示例的良好文档。

@PatrickHofman 不,只是一个普通的控制台应用程序。 - Tom
2个回答

10

我发现了一种很酷的方法,可以运行通过Windows商店下载或预安装的所有Windows通用应用程序。每个Windows 10通用应用程序都有一个AUMID,代表“应用程序用户模型ID”。

使用PowerShell命令获取所有AUMID:

get-StartApps

输出:

PS C:\> get-StartApps

Name                      AppID
----                      -----
Skype                     Microsoft.SkypeApp_kzf8qxf38zg5c!App
Snip & Sketch             Microsoft.ScreenSketch_8wekyb3d8bbwe!App
Mail                      microsoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.w...
Calendar                  microsoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.w...
Movies & TV               Microsoft.ZuneVideo_8wekyb3d8bbwe!Microsoft.ZuneVideo
OneNote for Windows 10    Microsoft.Office.OneNote_8wekyb3d8bbwe!microsoft.onenoteim
Photos                    Microsoft.Windows.Photos_8wekyb3d8bbwe!App
Video Editor              Microsoft.Windows.Photos_8wekyb3d8bbwe!SecondaryEntry
Maps                      Microsoft.WindowsMaps_8wekyb3d8bbwe!App
Alarms & Clock            Microsoft.WindowsAlarms_8wekyb3d8bbwe!App
Voice Recorder            Microsoft.WindowsSoundRecorder_8wekyb3d8bbwe!App
Feedback Hub              Microsoft.WindowsFeedbackHub_8wekyb3d8bbwe!App
Xbox Game Bar             Microsoft.XboxGamingOverlay_8wekyb3d8bbwe!App
Camera                    Microsoft.WindowsCamera_8wekyb3d8bbwe!App
Microsoft Store           Microsoft.WindowsStore_8wekyb3d8bbwe!App
Weather                   Microsoft.BingWeather_8wekyb3d8bbwe!App
Cortana                   Microsoft.549981C3F5F10_8wekyb3d8bbwe!App
Instagram                 Facebook.InstagramBeta_8xx8rvfyw5nnt!Instagram
...

现在,您可以通过其AUMID启动任何通用应用程序,如下所示:

explorer shell:appsfolder\[AUMID]

例如,如果你想要执行 Skype
explorer shell:appsfolder\Microsoft.SkypeApp_kzf8qxf38zg5c!App

现在是回到C#的时候了:

Process.Start("explorer shell:appsfolder\Microsoft.BingWeather_8wekyb3d8bbwe!App");

Windows天气应用程序将被执行。

2
这是一个很棒的解决方案。跟随另一个基于注册表的方法是繁琐的,而我的 Microsoft Store WSL Ubuntu 安装甚至都没有在那里列出来。通过您的 PS get 命令列出来的,使用您的资源管理器模板和相关名称从命令行或 Process.Start() 很完美地解决了问题。 - schulmaster

9

有几种方法可以实现。最简单的方法是使用Process.Start和URL或文件处理程序。

例如,这将打开视频应用:

Process.Start("microsoftvideo://");

或者在更新页面上的 Store 店铺:
Process.Start("ms-windows-store:updates");

或者是照片应用程序:

Process.Start("ms-photos://");

这里有几个句柄,其中一些可以在这里找到。当你打开注册表键HKEY_CLASSES_ROOT\Extensions\ContractId\Windows.Protocol\PackageId时,你可以找到名称。查找CustomProperties键。它有一个属性Name。这就是要使用的那个。

其他有用的指针可以在SU上找到:如何在Windows 8中从命令行运行Metro应用程序?


@Tom:这篇文章对你有帮助吗?需要更多的帮助吗? - Patrick Hofman
它很有用,而且肯定有效,唯一的问题是我不知道所有应用程序的URL,例如计算器或日历,还有从应用商店安装的非标准应用程序怎么办。 - Tom
我也不知道。你必须亲自去注册表查看。 - Patrick Hofman
@PatrickHofman 我正在尝试使用 Process.Start(),但是我遇到了编译器错误。它找不到库或其他内容,但这并没有太多意义,因为此库已包含在 .NET 4.6 中。您有任何关于发生什么的想法吗? - Eva FP
@EvaFP 请创建一个新的问题,链接到这个问题/答案,并在这里链接给我。我需要了解您的项目类型和当前代码的更多信息。 - Patrick Hofman
显示剩余2条评论

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