【问题标题】:List and launch metro apps in Windows 10 with C#使用 C# 在 Windows 10 中列出和启动 Metro 应用程序
【发布时间】:2015-10-15 17:40:42
【问题描述】:

我需要列出 Windows 10 系统中已安装的 Metro 应用程序。 从列表开始,我想启动任何已安装的应用程序。 唯一的要求是我不必使用 PackageManager 类。

我刚刚从 PowerShell http://poshcode.org/3740 中的这个鼓舞人心的代码开始解决了 Win 8 中的问题 现在我想在 Windows 10 中做同样的事情,但在我看来 Metro 应用程序的注册表映射自 8/8.1 以来发生了很大变化。

【问题讨论】:

    标签: c# microsoft-metro


    【解决方案1】:

    不确定这是否会对您有所帮助,但我在 Windows 10 中发现了一个本机 powershell 命令,可能会有一些用处。

    Get-AppxPackage

    例如,获取应用名称列表:

    > Get-AppxPackage | Select Name
    
    Name
    ----
    Microsoft.AAD.BrokerPlugin
    Microsoft.Windows.CloudExperienceHost
    Microsoft.AccountsControl
    Microsoft.BioEnrollment
    Microsoft.LockApp
    Microsoft.MicrosoftEdge
    Microsoft.Windows.AssignedAccessLockApp
    Microsoft.Windows.ContentDeliveryManager
    Microsoft.Windows.ParentalControls
    Microsoft.Windows.ShellExperienceHost
    Microsoft.XboxGameCallableUI
    Microsoft.XboxIdentityProvider
    Windows.ContactSupport
    windows.immersivecontrolpanel
    Windows.MiracastView
    Windows.PrintDialog
    Windows.PurchaseDialog
    windows.devicesflow
    Microsoft.VCLibs.140.00
    Microsoft.VCLibs.140.00
    Microsoft.Windows.Cortana
    Microsoft.WindowsFeedback
    Microsoft.NET.Native.Runtime.1.1
    Microsoft.NET.Native.Runtime.1.1
    Microsoft.VCLibs.120.00.Universal
    4DF9E0F8.Netflix
    Microsoft.VCLibs.120.00.Universal
    Microsoft.WindowsCalculator
    Microsoft.Appconnector
    Microsoft.WindowsStore
    Microsoft.NET.Native.Runtime.1.0
    Microsoft.VCLibs.120.00
    Microsoft.Media.PlayReadyClient.2
    

    我个人只安装了一个第 3 方 Metro 应用程序 Netflix,我什至卸载了一些默认的 Microsoft 应用程序。

    如果您想从该查询中排除 Microsoft 和 Windows 应用:

    > Get-AppxPackage | ? {$_.Name -notlike "Microsoft*" -AND $_.Name -notlike "Windows*"}| Select Name
    
    Name
    ----
    4DF9E0F8.Netflix
    

    我还没有找到从中启动应用程序的方法,但我确信这是朝着正确方向迈出的一步。 ;)

    编辑:

    好吧,原来这很简单,但发现起来却出奇地难……

    Start Shell:AppsFolder\4DF9E0F8.Netflix_mcm4njqhnhss8!App
    

    这个 AppID 可以从下面检索到,据我所知,它列出了开始菜单中的所有内容。

    Get-StartApps
    

    还可以通过在 PackageFamilyName 属性末尾附加“!App”从 Get-AppxPackages cmdlet 中检索它。

    Get-AppxPackage | % { $_.PackageFamilyName + "!App" }
    

    我发现这适用于一些,但不是全部。 例如,它适用于 Netflix、Calculator、Store。但是 Microsoft Edge 是“!MicrosoftEdge”而不是“!App”。因此,除非您可以从其他地方识别或检索后缀,否则我不会说这是一种可靠的方法,这就是为什么我发现 Get-StartApps 更适合我的原因。 (我个人只是在寻找一种通过脚本/快捷方式启动 Netflix 的方法......)

    【讨论】:

    • 不幸的是,这个问题要求 C# 解决方案。我试图获取您的 PowerShell 解决方案所涉及程序集的源代码,但我终于找到了不是托管库的 c:\Windows\System32\Windows.ApplicationModel.dll。
    猜你喜欢
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多