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

    [Windows 10]Creators UpdateのISOファイルを直接ダウンロードする方法

    下記記事の通り、本日(2017/4/5(米国時間))から「Window…

  2. Windows関連

    PCをクリーンインストールしたので普段使っているツールをまとめてみた。

    Office 2016のリリースに合わせてメインで使っているPCをクリ…

  3. Windows関連

    [Windows 8]ストアでアプリを検索する。

    今回はWindows 8のストアでアプリを検索する方法を紹介します。…

  4. Windows 10

    WebDriverを使わずMicrosoft Edgeを制御するC#コード

    以前書いた記事のように、Microsoft EdgeにはInterne…

  5. Windows 10

    Microsoft Edgeの拡張機能でHello Worldしてみた。

    「【Windows 10ユーザーズ・ワークベンチ】Edgeの拡張機能サ…

  6. Windows関連

    [Windows 8]拡張子を表示する。

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

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP