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関連

    Windows 8 Release PreviewにClassic Shellをインストールしてみま…

    2012/8/22 追記:Windows 8 RTMにインストール…

  2. Windows 10

    Windows 10 May 2019 UpdateをISO形式でダウンロードして実機にインストール…

    下記記事にもあるように、5月21日(米国時間)にWindows 10 …

  3. Windows関連

    [Windows 8]従来のスタートメニューを使用する。

    2012/3/2 追記:下記情報はWindows Develope…

  4. Windows関連

    C#からWinium.Cruciatusを使ってみた。

    前回の記事では、Winium WebDriverを使ってメモ帳を操作し…

  5. Windows関連

    プリキュア・プリンセスパーティーってWindowsだったの?

    Office 2016だOffice アドインだと記事を書いておきつつ…

  6. Windows関連

    特殊フォルダーのパスを取得するVBScript

    ファイルのコピーや移動を行う場合に特殊フォルダーのパスが必要になること…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP