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)等、表に出てこないアプリを確認する際に上記コードを使用しています。

関連記事

  1. Windows関連

    [Windows 8]画像をタッチしてログオンする。

    ※ 下記はWindows Developer Preview(英語版・…

  2. Windows関連

    OSのバージョン情報をクリップボードにコピーするVBScript

    OSのバージョンやビルド番号をブログの記事内に書くことがあるのですが、…

  3. Windows 10

    【2017年4月版】Microsoft Edgeで開いているページを名前を付けて保存する方法

    2015年8月に、Microsoft Edgeで開いているページを名前…

  4. Windows 10

    「ファイル名を指定して実行」からMicrosoft Edgeを起動する

    以前書いた記事で、Microsoft EdgeをVBScriptから起…

  5. Windows関連

    [Windows 8]管理者権限でコマンドプロンプトを実行する。

    ※ 下記はWindows Developer Preview(英語版・…

  6. Windows関連

    [Windows 8]エクスプローラーのリボンを無効にする。

    ※ 下記はWindows 8 Release Preview(日本語版…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP