概要
柔軟な仮想化機能を使用すると、アプリで一 部 のファイルとレジストリ エントリを他のアプリに表示する必要があることを宣言できます。アプリのアンインストール時に保持する必要があります。 他のすべての ファイルとレジストリ エントリは、他のアプリには表示 されません 。アンインストール時に削除されます。
選択した場所の仮想化を制御する方法
注
このセクションで説明する動作は、Windows 10 バージョン 21H1 で導入されました。
Windows 10 バージョン 21H1 以降、システムは、 非仮想化Resources 制限付き機能の既存の動作と、 RegistryWriteVirtualization プロパティと FilesystemWriteVirtualization プロパティを 保持します。 さらに、システムは、仮想化しない特定のフォルダーやレジストリ キーを宣言する機能をアプリに追加します。
-
%USERPROFILE%\AppData内にあるファイル システムの場所のみを宣言できます。 - HKCU 内のレジストリの場所のみを宣言できます。
例を次に示します。
<!-- Declare the desktop6 and/or virtualization XML namespace where the virtualization properties are defined, and include this in the list of ignorable namespaces. -->
<!-- Declare the XML namespace for the required restricted capability, and include it in the list of ignorable namespaces. -->
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:desktop6="http://schemas.microsoft.com/appx/manifest/desktop/windows10/6"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
xmlns:virtualization="http://schemas.microsoft.com/appx/manifest/virtualization/windows10"
IgnorableNamespaces="rescap desktop6 virtualization">
<!-- ... -->
<!-- Other entries omitted for brevity. -->
<!-- ... -->
<Properties>
<!-- If you don't want virtualization of registry writes to HKEY_CURRENT_USER, then include the property, and set it to disabled. -->
<desktop6:RegistryWriteVirtualization>disabled</desktop6:RegistryWriteVirtualization>
<!-- If you don't want virtualization of file system writes to the user's AppData folder, then include the property, and set it to disabled. -->
<desktop6:FileSystemWriteVirtualization>disabled</desktop6:FileSystemWriteVirtualization>
<!-- On Windows 10, version 21H1 and later OS versions, you can declare specific file system and/or registry locations that you want to be unvirtualized.
If these are recognized on the current device, then they take precedence over the old declarations. On older devices,
the new declarations are ignored and the old ones are honored. -->
<virtualization:FileSystemWriteVirtualization>
<virtualization:ExcludedDirectories>
<virtualization:ExcludedDirectory>$(KnownFolder:LocalAppData)\Fabrikam\Widgets</virtualization:ExcludedDirectory>
<virtualization:ExcludedDirectory>$(KnownFolder:RoamingAppData)\Fabrikam\Widgets</virtualization:ExcludedDirectory>
</virtualization:ExcludedDirectories>
</virtualization:FileSystemWriteVirtualization>
<virtualization:RegistryWriteVirtualization>
<virtualization:ExcludedKeys>
<virtualization:ExcludedKey>HKEY_CURRENT_USER\Software\Fabrikam\Widgets</virtualization:ExcludedKey>
</virtualization:ExcludedKeys>
</virtualization:RegistryWriteVirtualization>
</Properties>
<Capabilities>
<!-- Include the required restricted capability. -->
<rescap:Capability Name="unvirtualizedResources"/>
</Capabilities>
</Package>
注
アプリで Windows 10 より前のバージョン 21H1 と Windows 10 バージョン 21H1 構文の両方が宣言されている場合、以前の宣言は Windows 10 バージョン 21H1 より前のバージョンで使用され、新しい宣言は Windows 10 より前のバージョン 21H1 以降で使用されます。
Windows 10 バージョン 21H1 より前のメカニズム
従来の環境では、アプリはファイル システムのほとんどの場所でファイルを作成、更新、削除できます。 また、Windows レジストリでエントリを作成、更新、削除することもできます。 これらのファイルとレジストリ エントリは、システム上の他のアプリに表示されますが、多くの場合は必要ありません。 さらに、アプリをアンインストールすると、それらのファイルとレジストリ エントリが残され、煩雑になることがよくあります。
ユニバーサル Windows プラットフォーム (UWP) では、そのようなファイルとレジストリ エントリが仮想化され、書き込んだアプリだけが表示されます。 また、アプリがアンインストールされると削除されます。 ただし、アプリがこのようなファイルやレジストリ エントリを他のアプリに表示する場合は、有効なシナリオがあります。 さらに、他のアプリでは、ファイルとエントリを書き込んだアプリがアンインストールされた後も保持する必要がある場合があります。
既定の MSIX 動作
| ロケーション | コンテキスト | 説明 |
|---|---|---|
| HKCUの | インストール時 |
|
| HKCUの | 実行時間 |
|
| HKLMの | インストール時 |
|
| HKLMの | 実行時間 |
|
| 既知のフォルダー | インストール時 |
|
| アプリケーションデータ | 実行時間 |
|
制限付き機能 unvirtualizedResources
注
unvirtualizedResources制限付きの機能サポートは、Windows 10 バージョン 1903 (10.0; ビルド 18362)、別名 Windows 10 May 2019 Update で導入されました。
アプリでは、 unvirtualizedResources 制限された機能を宣言し、 RegistryWriteVirtualization プロパティまたは FilesystemWriteVirtualization プロパティを trueに設定して、 HKCU や AppData への書き込みアクセスを取得できます。 これは、アプリがそのパッケージの外部にある他のプロセスに表示されるエントリを書き込む必要がある場合に有効にするためです。 たとえば、ゲームは保存データを AppData に書き込み、ゲームがアンインストールされた後もデータを保持する必要があります。
| プロパティ | 説明 |
|---|---|
| RegistryWriteVirtualization=無効 | HKCU への書き込みは、仮想化されていない場所に移動し、パッケージ外の他のプロセスに表示され、アプリのアンインストール時にクリーンアップされません。 |
| FilesystemWriteVirtualization=無効 | AppData への書き込みは、仮想化されていない場所に移動し、パッケージ外の他のプロセスに表示され、アプリのアンインストール時にはクリーンアップされません。 |
このメカニズムにより 、HKCU や AppData の仮想化が完全にオフになり、主な目標に反します。 これはきめ細かいツールではなく、多くの場合、特定のアプリの要件を超えています。