如何自动执行 Microsoft Windows 10 通用 Windows 平台软件应用程序的启动过程?

如何自动执行 Microsoft Windows 10 通用 Windows 平台软件应用程序的启动过程?

我想自动化 Microsoft Windows 10 通用 Windows 平台软件应用程序的启动过程。

根据这个问题,如果不采取临时措施,这个问题仍然无法解决。

解决方法是编写一个批处理文件,使用 Microsoft Windows PowerShell 集成 shell 脚本环境来启动特定的软件应用程序。

但是,文件夹中没有直接的路径指向该特定的软件应用程序C:\Windows\SystemApps\

有什么线索吗?

在下面已经提供的评论和前两个答案之后更新:

该应用程序被称为“天气“。它的名字很长,似乎是”微软 MSN Bing 天气“。

下面给出了基于 Microsoft PowerShell 集成 Shell 脚本环境的自动化解决方案的答案。

一个简单的手动解决方法如下:

  1. 使用开始菜单(和不是开始屏幕覆盖整个桌面视图(如全屏模式)时,将“天气“桌面视图上的平铺。

  2. Windows+R组合键弹出“跑步“ 对话框。

  3. 类型shell:startupEnter密钥。

  4. 复制“天气“从桌面视图快捷方式进入StartUp文件夹内。

答案1

Windows 商店应用程序有一些怪癖,但可以处理。Powershell 将 Windows 商店应用程序称为AppxPackages,但一个包中可以有多个应用程序,因此我们还需要检查AppxManifest.xml文件以获取更多信息。

首先,您需要包名称,您可以通过将快捷方式拖到桌面,然后检查属性> Targettype(您只需要一个唯一的名称)来找到它:

目标类型截图

现在在 Powershell 中,我们得到了包 - 您可以通过将快捷方式拖到桌面,然后检查属性 > Targettype 来找到包名称:

$pkg = Get-AppxPackage *Communication*

然后我们获取其清单的 XML 数据:

$manifest = [xml](get-content "$($pkg.InstallLocation)/AppxManifest.xml")

然后我们从 XML 中获取包 ID:

$ID = $manifest.Package.Applications.Application.id

为了确保万无一失,我们检查以确保只有一个应用程序 ID:

if ($id.count -gt 1) {Write-Error "Found more than one app ID in package!: $id";break}

就我而言,我有多个,因此我将手动指定 ID:

$ID = 'microsoft.windowslive.calendar'

最后,我们启动应用程序:

Start-Process explorer.exe -ArgumentList "shell:appsfolder\$($pkg.PackageFamilyName)!$id"

或者作为单个脚本:

$pkg = get-appxpackage *Calculator*
$manifest = [xml](get-content "$($pkg.InstallLocation)/AppxManifest.xml")
$id = $manifest.Package.Applications.Application.id
if ($id.count -gt 1) {Write-Error "Found more than one app ID in package!: $id";break}
Start-Process explorer.exe -ArgumentList "shell:appsfolder\$($pkg.PackageFamilyName)!$id"

请注意:这必须以当前登录用户的身份运行。

答案2

您可以像这样调用 UWP 应用程序:

explorer.exe shell:appsFolder\<PackageFamilyName>!<PackageName>

如果在 PowerShell 中运行以下命令:

Get-AppxPackage | Select-Object PackageFamilyName, Name

您将获得PackageFamilyNamePackageName返回。然后您可以在上述命令中使用它。例如,如果您想启动 Windows 应用商店:

explorer.exe shell:appsFolder\Microsoft.WindowsStore_8wekyb3d8bbwe!Microsoft.WindowsStore

然后,您可以编写自己的Start-AppxPackage函数(为什么目前还没有本机的 cmdlet,这对我来说是个谜)

Function Start-AppxPackage {
    
    Param(
        [parameter(ValueFromPipelineByPropertyName)]
        [string]$PackageFamilyName,
        [parameter(ValueFromPipelineByPropertyName)]
        [string]$Name
    )

    Process {
        $Invoke = "explorer.exe shell:appsFolder\{0}!{1}" -f $PackageFamilyName, $Name
        Invoke-Expression $Invoke   
    }
}

然后你可以像这样简单地使用它,例如:

Get-AppxPackage *photos* | Start-AppxPackage

您还可以一次启动多个应用程序:

Get-AppxPackage | ? {($_.Name -like '*photos*') -or ($_.Name -like '*store*')} | Start-AppxPackage

然后可以将此命令包含在启动脚本或类似脚本中

然而,老实说,通过资源管理器启动 shell 应用程序似乎存在严重错误。过了一会儿,它只会在我的文档上打开资源管理器,而不是启动正确的 shell 应用程序。

相关内容