【问题标题】:Launching windows 10 store apps启动 Windows 10 商店应用程序
【发布时间】:2015-08-18 13:53:03
【问题描述】:

我正在寻找一种通过 C# 在 Windows 10/8.1 上启动/运行 Windows 商店应用程序的方法。

我尝试运行的应用示例如下:

  1. 计算器
  2. 照片
  3. 设置

注意:在 Windows 10 中,这些不再是标准的 .exe 文件,可以通过双击或调用 Process.Start() 来执行,因为它们现在是 Windows 商店应用程序。

我曾尝试使用 IApplicationActivationManager,但找不到合适的文档以及如何使用它的示例。

【问题讨论】:

  • @PatrickHofman 不,只是一个普通的控制台应用程序。

标签: c# windows-10


【解决方案1】:

有几种方法可以做到这一点。最简单的方法是使用 Process.Start 和 URL 或文件处理程序。

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

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

或更新页面上的商店:

Process.Start("ms-windows-store:updates");

或照片应用程序:

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

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

其他一些有用的指针可以在 SU 上找到:How do I run a Metro-Application from the command-line in Windows 8?

【讨论】:

  • @Tom:这篇文章对您有帮助吗?需要更多帮助?
  • 它很有帮助,而且绝对有效,唯一的问题是我不知道所有应用程序的 URL,例如计算器或日历,还有从应用程序商店安装的非标准应用程序呢。跨度>
  • 我也没有。您必须自己去注册表才能看到。
  • @PatrickHofman 我正在尝试使用Process.Start(),但出现编译器错误。它没有找到该库或其他任何东西,但这没有多大意义,因为该库包含在 .NET 4.6 中。你知道发生了什么吗?
  • @EvaFP 请创建一个新问题,链接到这个问题/答案,请在此处链接到我。我必须更多地了解您的项目类型和当前代码。
【解决方案2】:

我找到了一种很酷的方式来运行通过 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

现在是时候回到 Csharp:

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

Windows Weather 应用程序将执行。

【讨论】:

  • 这是一个很好的解决方案。跟随另一个基于注册表的注册表是乏味的,而且我的 Microsoft Store WSL Ubuntu 安装甚至都不存在。它由您的 PS get 命令列出,并且使用具有相关名称的资源管理器模板在命令行和Process.Start() 中完美运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-02
  • 1970-01-01
  • 2016-07-26
  • 2015-09-29
  • 2013-11-19
相关资源
最近更新 更多