検索
連載

コマンドラインからWindowsのモダンアプリを起動できないのはもう昔の話?その知識、ホントに正しい? Windowsにまつわる都市伝説(200)

「Windowsのモダンアプリは、コマンドプロンプトから起動することができない」――これをWindows 8で初めて登場(当時は「Metroアプリ」とも呼ばれていました)したときからの常識と思って、諦めていませんか? 実は、全てのモダンアプリではありませんが、数年前からコマンドラインから起動できるものが出始め、一部のビルトインアプリもそうなっています。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「Windowsにまつわる都市伝説」のインデックス

Windowsにまつわる都市伝説

「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)。

画面1
画面1 「C:\Windows\System32\mspaint.exe」は存在しないのに、どこのパスから「mspaint.exe」とタイプしても、ストアアプリ版ペイントが起動する

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
画面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」を利用したコンソールアプリをモダンアプリとして開発できるようになっています。

 なお、現在の「Microsoft Edge」はモダンアプリではなく、x64版の場合は「C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe」にあります。コマンドプロンプトで「msedge.exe」とタイプしてもパスが通っていないため起動できませんが、「MicrosoftEdge.exe」とタイプすると起動できます。これは、Microsoft Edgeがモダンアプリとしてのパッケージ情報がシステムに登録されており、「AppExecutionAlias」の機能を利用しているからです(画面3)。

画面3
画面3 「msedge.exe」とタイプしてもエラーになるが、「MicrosoftEdge.exe」とタイプすると「msedge.exe」が起動する

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プログラムとして公開できるはずです。

画面4
画面4 Windows 10のデスクトップ上でWindows 10の従来のペイントと、Windows 11のペイントを共存

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。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.

ページトップに戻る