- 会員限定
- 2022/06/21 掲載
ユニバーサルWindowsプラットフォーム(UWP)とは?その存在意義は今、どこにあるのか
山市良のマイクロソフトEYE
制限の多い安全な実行環境だった「メトロアプリ」時代
ユニバーサルWindowsプラットフォーム(UWP)は、Windows 8で初めて導入され、メトロ(Metoro)アプリ、ストアアプリ、イマーシブ(没入型)アプリなど、さまざまな名称で呼ばれたモダンアプリの開発、実行環境です。当時のモバイルデバイス向けのOSであったWindows Phoneとは技術的に異なりますが、Windowsストア(現在のMicrosoft Store)という共通のストアを通じて、開発者がマイクロソフトに申請し、承認されたアプリのみが有料または無料、またはOSにビルトインされる形で提供されました。
当時のUWPアプリは、アプリコンテナ(AppContainer)と呼ばれる特権やアクセス範囲が制限されたサンドボックス環境の中でアプリケーションが実行され、ユーザーは1024×768以上の解像度のディスプレイに全画面(または縦方向の2分割表示)した状態で対話することができました。また、起動するにはスタート画面からしか起動できず、アプリの終了という概念がなく、特権的な操作を行う方法を持ちませんでした(冒頭の画面1参照)。
それは、ウィンドウを自由にリサイズでき、実行可能ファイルのダブルクリックで起動し、ウィンドウを閉じる操作で終了でき、管理者権限(特権の昇格により)や別のユーザー(Runasコマンド)としても実行できる従来のWin32デスクトップアプリとはまったく異なる世界でした。
UWPアプリのサンドボックス環境は、「アプリコンテナ」と呼ばれ、ユーザーアカウント制御(UAC)の基礎になっている特権の制限レベル「整合性レベル(Integrity Level)」の「低(Low)」よりも権限が制限された「AppContainer」で実行されます。また、開発者により宣言された「ケーパビリティ(Capability)」と呼ばれるアクセス許可(インターネット接続やホームネットワークと社内ネットワークなどのネットワーク範囲、画像や音楽などのリソース、カメラやマイクなどのデバイス、ファイルピッカーによる間接的なファイルシステムへのアクセス)のみでアプリコンテナの外部のデバイスやリソースとやり取りできました。
この制限された環境は、Windowsのデスクトップアプリケーションのための新たなセキュリティ境界になり、システムのセキュリティ向上につながるものでした。ビルトインアプリとWindowsストアのアプリのみを使用できる、Windows RT/RT 8.1(既に開発終了、2023年1月でサポート終了)のセキュリティと安定性を高く維持するのにも無くてはならないものでした。
事実上、何でもできる現行版
現在のWindows 10およびWindows 11のUWPアプリはどうかというと、解像度要件の削除、ウィンドウの自由なリサイズや配置、重ね合わせができるようになったのはもちろんのこと、UWPアプリでできることも大幅に増えています。Windows 10の最初のリリースからそうだったわけではありませんが、サービスとしてのWindows(Windows as a Service)の半期チャネル(SAC)という短いサイクルで少しずつ機能強化されてきました。特定のUWPアプリが要求するケーパビリティ、つまり使用するためにはユーザーが受け入れる必要があるアクセス許可は、Mirosoft Storeのアプリのページの「追加情報」にある「このアプリでは次のことができます」(筆者はこの日本語訳が適切でないと思っています)で確認できます。たとえば、「Windows電卓」アプリは、「インターネット接続にアクセスする」のケーパビリティを使用します(「為替レートの更新」のために必要なようです)。
では、「WinDbg Preview」アプリの「このアプリでは次のことができます」を確認してみてください。そこには「すべてのシステムリソースを使用する」が含まれているのが分かるでしょう。このアプリは、アプリケーションやカーネル(ローカルまたはリモート)のデバッグを行うための「Debugging Tools for Windows」のUWPアプリ版であり、デバッガーでデバッグを行うには、管理者権限やデバッグ特権といった高い権限が必要です(画面2)。
「すべてのシステムリソースを使用する」が許可されたアプリは、デスクトップブリッジやCentennialアプリとも呼ばれる種類の比較的新しいタイプのアプリであり、Win32アプリケーションを「Desktop App Converter」(現在は非推奨)やその後継の「MSI Packaging Tool」で変換、パッケージ化したものです。
Centennialアプリは、制限されたアプリコンテナの中で実行される従来のUWPアプリとは異なり、レジストリとファイルシステムを仮想化(ローカルの実際のレジストリやシステムファイルを変更しないように)する薄いレイヤー上で実行されます。インストール先は通常のUWPアプリと同じように、「C:\Program Files\WindowsApps\<パッケージの完全名(Get-AppXPackageのPackageFullName)>\」になりますが、実行されたものは通常のWin32アプリケーションと同じです。管理者として特権を昇格して実行することも可能です。つまり、事実上何でもできるのです。
画面3は、Windows SysinternalsのProcess Explorerを使用して、WinDbg Previewのローカルカーネルデバッグ中のプロセスを参照したものです。整合性レベルは通常のUWPアプリの「AppContainer」ではなく、最上位の「高(High)」で実行されているのが分かるでしょう。
【次ページ】コンソールアプリの開発もサポート
関連コンテンツ
PR
PR
PR