Windows 10

ストアアプリを起動するPowerShellコード

ストアアプリ(UWPアプリ)は実行ファイルをダブルクリックする等して直接実行しても、起動することができません。

たとえば、Microsoft Edgeの実行ファイルは下記場所にありますが(「Microsoft Edgeの場所」参照)、このファイルをダブルクリックしてもEdgeは起動しません。

C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\MicrosoftEdge.exe

ストアアプリを起動するには、URIスキームIApplicationActivationManager::ActivateApplicationメソッドを使う必要があります。

今回は、PowerShellからIApplicationActivationManager::ActivateApplicationメソッドを使ってストアアプリを起動するコードを紹介します。

AppUserModelId(AUMID)の取得

ストアアプリを起動するには、まず、アプリを識別するためのID「AppUserModelId(AUMID)」を取得する必要があります。

foreach ($app in Get-AppxPackage | Sort-Object -Property Name) {
  foreach ($id in (Get-AppxPackageManifest $app).Package.Applications.Application.Id) {
    "Name:" + $app.Name + ", AUMID:" + $app.PackageFamilyName + "!" + $id
  }
}

PowerShellで上記コードを実行し、お目当てのアプリのAUMIDを探します。
たとえば、電卓の場合は「Microsoft.WindowsCalculator_8wekyb3d8bbwe!App」、フォトの場合は「Microsoft.Windows.Photos_8wekyb3d8bbwe!App」となります。

IApplicationActivationManager::ActivateApplicationメソッドによるストアアプリの起動

AUMIDが取得できたら、次はいよいよアプリの起動です。

$code = @"
using System;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

namespace ExecStoreApp
{
  [ComImport, Guid("2e941141-7f97-4756-ba1d-9decde894a3d"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  interface IApplicationActivationManager
  {
    IntPtr ActivateApplication([In] String appUserModelId, [In] String arguments, [In] UInt32 options, [Out] out UInt32 processId);
  }
  
  [ComImport, Guid("45BA127D-10A8-46EA-8AB7-56EA9078943C")]
  public class ApplicationActivationManager : IApplicationActivationManager
  {
    [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)/*, PreserveSig*/]
    public extern IntPtr ActivateApplication([In] String appUserModelId, [In] String arguments, [In] UInt32 options, [Out] out UInt32 processId);
  }
}
"@
Add-Type $code
$aumId = "Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge" #アプリのAppUserModelId(AUMID)
$processId = 0
$aam = New-Object ExecStoreApp.ApplicationActivationManager
$aam.ActivateApplication($aumId, $null, 0, [ref]$processId)
"プロセスID:$processId"

上記コードを実行すると、変数$aumIdで指定しているEdgeが立ち上がります。

元々は下記記事で書いたC#のコードをPowerShell向けに書き直したものですが、こちらの方が使い勝手が良いですね!

ちなみに私は、「テストアプリ」(Microsoft.Windows.SecureAssessmentBrowser_cw5n1h2txyewy!App)等、表に出てこないアプリを確認する際に上記コードを使用しています。

2018年9月の人気記事前のページ

【アイカツフレンズ!】フレンズスカウト(湊みお)に参加しました。次のページ

関連記事

  1. Windows 10

    起動中のMicrosoft EdgeからタイトルとURLを取得するVBAマクロ(UI Automat…

    当ブログでは、Microsoft Edgeを外部から操作するプログラム…

  2. Windows 10

    Chromium版のMicrosoft Edge Insiderを使ってみました。

    下記記事にある通り、Chromium版のMicrosoft Edgeが…

  3. Windows 10

    Microsoft Edgeの場所

    「Edge 本体 場所」「Microsoft Edge EXE どこ」…

  4. Windows 10

    PowerShellでMicrosoft Edgeを操作する

    前回の記事でWebDriverを使ってMicrosoft Edgeを操…

  5. Windows 10

    【2017年8月版】起動中のMicrosoft EdgeからタイトルとURLを取得するC#コード

    当ブログでは、EdgeからタイトルとURLを取得するコードについて、い…

  6. Windows関連

    [Windows 8.1]起動時にデスクトップを表示する。

    ※ 下記はWindows 8.1 RTM(日本語版・64ビット)に基づ…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

Translate

最近の記事

アーカイブ

PAGE TOP