MSIX では、コンテナー化モデルを使用して、システムの残りの部分からアプリを分離します。 汎用コンテナー テクノロジ (Docker など) とは異なり、MSIX コンテナーは仮想マシンではなく、別の OS イメージを必要としません。 代わりに、Windowsは実行時にアプリのファイル システムとレジストリ アクティビティをリダイレクトし、アプリを自己完結型にしながら、他のWindowsと正常に相互運用できるようにします。
この記事では、分離モデル、パッケージ アプリで使用できる 2 つの信頼レベル、およびこのアプローチが提供する利点について説明します。
MSIX コンテナー化とは何か (そうでない)
MSIX パッケージをインストールすると、Windowsアプリ自体が変更できない保護された場所 (C:\Program Files\WindowsApps\) にアプリのファイルが配置されます。 実行時に、Windowsはファイル システムとレジストリの仮想化ビューをアプリに提供します。読み取りはパッケージのインストール場所に移動し、書き込みWindows管理するユーザーごとの場所にリダイレクトされます。
これは、以下のようなことを意味します。
- アプリのインストール ファイルは、実行時に変更されることはありません。
- アプリの状態は、アプリ バイナリとは別に保存されます。更新、修復、アンインストールをクリーンで信頼性の高いものにします。
注
MSIX コンテナーは、個別のオペレーティング システム環境ではなく、Windowsランタイム機能です。 アプリはネイティブ Windows プロセスとして実行されます。これは、特定のシステム リソースの仮想化ビューを持っているだけです。
2 つの信頼レベル
パッケージ アプリは、次の 2 つの信頼レベルのいずれかで実行され、分離の程度が決まります。
完全信頼 (中程度の整合性)
完全信頼アプリは、標準のデスクトップ アプリと同じアクセス許可で実行されます。 Windowsでは、package ID と一部のファイル/レジストリ仮想化が提供されますが、アプリはほとんどのシステム リソースに直接アクセスできます。
これは、MSIX パッケージ 化ツールを使用して Win32 インストーラーから変換されたアプリと、ほとんどの WinUI 3 デスクトップ アプリの既定です。
AppContainer (部分信頼)
AppContainer アプリは、厳密に分離された環境で実行されます。 プロセスとその子は、明示的に許可されているリソースにのみアクセスできます。 Windowsでは、ファイル システムとレジストリの仮想化と AppContainer のセキュリティ境界を使用して分離が強制されます。
UWP アプリは常に AppContainer で実行されます。 デスクトップ アプリは、アプリ マニフェストで宣言することで、AppContainer をオプトインすることもできます。
ヒント
AppContainer アプリは最も強力なセキュリティ保証を得ますが、特に広範なシステム アクセスに依存するアプリでは、正しく構成するためにより多くの作業が必要です。 構成手順については、 MSIX AppContainer アプリ を参照してください。
MSIX コンテナー化モデルの利点
| 給付金 | 説明 |
|---|---|
| クリーン アンインストール | Windowsではすべてのアプリの状態を個別に追跡するため、MSIX パッケージをアンインストールすると、すべてのアプリ ファイル、レジストリ エントリ、およびシステムの変更が削除され、残った成果物はありません。 ユーザーが作成したファイルは保持されます。 |
| 信頼性の高い更新プログラム | アプリ バイナリは実行時に読み取り専用です。 更新によってパッケージがアトミックに置き換えられ、必要に応じてアプリをロールバックできます。 |
| レジストリの汚染なし | アプリからのレジストリ書き込みは、 HKEY_LOCAL_MACHINEではなく、ユーザーごとの仮想ハイブに移動します。 これにより、従来の Win32 インストーラーと一般的なレジストリが広がらないようにします。 |
| セキュリティの分離 | AppContainer アプリは、明示的に付与されたリソースに制限され、侵害されたプロセスの影響を軽減します。 |
| 整合性の適用 | Windowsは、実行時にパッケージ ファイルの改ざんを検出できます。 パッケージが改ざんされた場合、Windowsは起動をブロックし、修復をトリガーします。 MSIX パッケージの署名の概要を参照してください。 |
仮想化スコープ
すべてのファイル システムとレジストリの場所が仮想化されているわけではありません。 Windowsは、アクセスする場所に応じて異なる動作を適用します。
- パッケージ インストール ファイルへの書き込みはブロックされます。インストール場所は読み取り専用です。
- AppContainer アプリシステムの場所 (
C:\Windows\など) への書き込みがブロックされます。 -
ユーザー プロファイルの場所 (
AppDataなど) への書き込みは、AppContainer アプリのパッケージごとの場所にリダイレクトされるか、完全信頼アプリの場合はパススルーされます。 -
パッケージ化された VFS の場所からの読み取りはパッケージ自体から提供され、アプリは従来の場所 (
C:\Program Files\など) にインストールされたかのように動作します。
ファイル システムとレジストリの仮想化のしくみに関する技術的な詳細については、「パッケージ 化されたデスクトップ アプリが Windows でどのように実行されるかを理解する」を参照してください。
共有コンテナー
既定では、各 MSIX パッケージは独自の分離コンテナーで実行されます。 複数のパッケージがランタイム環境 (メイン アプリやカスタマイズ パッケージなど) を共有する必要があるエンタープライズ シナリオの場合、Windowsでは、共有パッケージ コンテナーがサポートされます。 共有コンテナーは、定義済みのパッケージ セットに、互いの仮想ファイル システムとレジストリの結合ビューを提供します。
これは、管理特権を必要とするエンタープライズ専用の機能です。 「共有パッケージ コンテナー」を参照してください。
柔軟な仮想化
Windows 11以降、アプリは仮想化から特定のファイル システム フォルダーまたはレジストリ キーを選択的に選択できます。これにより、それらの場所が他のアプリに表示され、アンインストール後も保持されます。 これは、構成やデータを他のアプリと共有する必要があるアプリで、MSIX パッケージ化のメリットを引き続き活用する場合に便利です。
柔軟な仮想化を参照してください。
関連資料
パッケージ化されたデスクトップ アプリを Windows - MSIX AppContainer アプリ
- 柔軟な仮想化
- 共有パッケージ コンテナー
- MSIX パッケージへの署名の概要