コマンドラインからWindowsのモダンアプリを起動できないのはもう昔の話?:その知識、ホントに正しい? Windowsにまつわる都市伝説(200)
「Windowsのモダンアプリは、コマンドプロンプトから起動することができない」――これをWindows 8で初めて登場(当時は「Metroアプリ」とも呼ばれていました)したときからの常識と思って、諦めていませんか? 実は、全てのモダンアプリではありませんが、数年前からコマンドラインから起動できるものが出始め、一部のビルトインアプリもそうなっています。
「C:\Windows\System32\mspaint.exe」はないのにペイントが起動する謎
「Metro(メトロ)アプリ」「ストアアプリ」「ユニバーサルWindowsプラットフォーム(UWP)アプリ」など、さまざまな呼び名で呼ばれる、あるいは呼ばれてきたWindowsのモダンアプリは、従来のWin32アプリケーションのように実行可能ファイルを単に起動するのではなく、「アクティブ化(Activation)」という手続きを経て初めて起動できます。
モダンアプリは通常、「Windows 10」の(モダン)スタートメニューやタスクバーのタイル、ピン留め、検索機能から起動できます。そのため、長い間、コマンドプロンプトからは直接起動することはできませんでした。
デスクトップにショートカットを作成して簡単に起動したい、バッチファイルから起動したい、RemoteAppプログラムとして公開したいといった、ユーザーや管理者はその望みをかなえられず、早々に諦めたと思います。PowerShellの複雑なスクリプトを書くことで目的を実現することもできるようですが、大衆向けではありません。
実は、現在のWindows 10や「Windows 11」では、コマンドプロンプトから起動できるモダンアプリが確かに存在します。例えば、Windows 11では「ペイント」がモダンアプリ化され、従来の「C:\Windows\System32\Mspaint.exe」は提供されなくなりました。しかし、コマンドプロンプトで「mspaint.exe」または「mspaint」とタイプすると、モダンアプリ版のペイントが起動してくれます(画面1)。
Windows 10 バージョン1709からサポートされた「AppExecutionAlias」のおかげ
モダンアプリ版ペイントの実際のアプリ実行可能ファイルは、「C:\Program Files\WindowsApps\Microsoft.Paint_11.2110.0.0_x64__8wekyb3d8bbwe\PaintApp\mspaint.exe」にあります(実は、フルパスで指定しても起動できますが、今回とは別の話です。別のアプリでは「アクセスが拒否されました」と表示されて起動できないものもあり、それが本来の期待された動作です)。
環境変数「PATH」にはもちろん、このパスは含まれません。それでも起動できるのは、環境変数「PATH」にある別の謎のパス「%USERPROFILE%\appdata\local\microsoft\WindowsApps」があるからです(画面2)。
画面2 パスが通っている「%USERPROFILE%\appdata\local\microsoft\WindowsApps」にあるサイズ0の「mspaint.exe」を見つけて、ストアアプリ版ペイントをアクティブ化できるようになっている
このパスを開くと、サイズ0の「mspaint.exe」が存在します。これは単純なショートカットではありません。技術的には、このファイルはシンボリックリンクなどでも使用されるNTFSの再解析ポイントであり、その機能を利用してアクティブ化に必要な情報(アプリのパッケージファミリー名やID、実行可能ファイルのフルパスなど)を提供します。
実はこの機能、Windows 10 Fall Creators Update(バージョン1709)から導入された「AppExecutionAlias」というもので、「%USERPROFILE%\appdata\local\microsoft\WindowsApps」にファイルが配置されるかどうかは、ユーザーが自由にできるものではなく、アプリの開発者がそうするかどうかに依存します。なお、Windows 10 April 2018 Update(バージョン1803)からは、「AppExecutionAlias」を利用したコンソールアプリをモダンアプリとして開発できるようになっています。
- uap5:AppExecutionAlias(Microsoft Docs)
なお、現在の「Microsoft Edge」はモダンアプリではなく、x64版の場合は「C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe」にあります。コマンドプロンプトで「msedge.exe」とタイプしてもパスが通っていないため起動できませんが、「MicrosoftEdge.exe」とタイプすると起動できます。これは、Microsoft Edgeがモダンアプリとしてのパッケージ情報がシステムに登録されており、「AppExecutionAlias」の機能を利用しているからです(画面3)。
RemoteAppでWindows 11のペイントをWindows 10で起動してみた
コマンドプロンプトから起動できるモダンアプリであれば、リモートデスクトップサービス(RDS)ベースの仮想デスクトップインフラストラクチャ(VDI)環境などで、RemoteAppプログラムとしても公開できるはずです。
環境を準備するのは面倒なので、Windows 10のHyper-V環境にWindows 11の仮想マシンを作成し、RDP(Remort Desktop Protocol)ファイルを手書きしてやってみました。パス指定なしで「mspaint.exe」を指定することで、モダンアプリ版ペイントを起動させることができました(画面4)。
モダンアプリ版ペイントは、「C:\Program Files\WindowsApps\Microsoft.Paint_11.2110.0.0_x64__8wekyb3d8bbwe\PaintApp\mspaint.exe」のフルパス指定でもコマンドプロンプトから起動できます。フルパス指定では「アクセスが拒否されました」のエラーとなる別のモダンアプリでも試してみましたが、正常に起動させることができました。そのため、「%USERPROFILE%\appdata\local\microsoft\WindowsApps」にサイズ0の実行可能ファイルが存在するモダンアプリであれば、RemoteAppプログラムとして公開できるはずです。
筆者紹介
山市 良(やまいち りょう)
岩手県花巻市在住。Microsoft MVP 2009 to 2022(Cloud and Datacenter Management)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows版Docker&Windowsコンテナーテクノロジ入門』(日経BP社)、『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Windows 11一般提供開始、企業での導入/展開時に注意すべきポイントは?
MicrosoftはWindowsデスクトップOSの最新バージョンである「Windows 11」を正式にリリースし、Windows 11対応ハードウェアを搭載したWindows 10デバイスに対して、無料アップグレードの段階的なロールアウトを開始しました。 - Windows 11登場! 11で変わること、思ったほど変わらないこと
新しいWindows OS「Windows 11」の正式出荷が2021年10月5日に開始された。Windows 10からの無償アップグレードが可能であるため、どのような新機能が実装されたのか気になる人も多いのではないだろうか。そこで、本稿ではWindows 11の新機能、削除された機能などを簡単にまとめてみた。 - 買って、試して分かったWindows 365(契約・セットアップ編)
Microsoftからクラウド上でWindows 10が動く「クラウドPC」の利用可能なサブスクリプションサービス「Windows 365」の提供が開始された。早速、サブスクリプションを契約し、クラウドPCの設定を行ってみた。契約からセットアップまでで見えてきた便利な点、不便な点などをまとめてみた。 - いよいよ完全終了へ。Internet Explorer(IE)サポート終了スケジュール
長らくWindows OSに標準装備されてきたInternet Explorer(IE)。その「寿命」は各種サポートの終了時期に左右される。Windows OSごとにIEのサポート終了時期を分かりやすく図示しつつ、見えてきた「終わり」について解説する。