Flexible Virtualisierung
Überblick
Das Feature zur flexiblen Virtualisierung bietet Ihrer App die Möglichkeit, zu deklarieren, dass eine Teilmenge ihrer Dateien und Registrierungseinträge für andere Apps sichtbar sein soll, und dass diese nach der Deinstallation der App erhalten bleiben sollen. Alle anderen Dateien und Registrierungseinträge sind für andere Apps nicht sichtbar und werden bei der Deinstallation entfernt.
Steuern der Virtualisierung ausgewählter Standorte
Hinweis
Das in diesem Abschnitt beschriebene Verhalten wurde in Windows 10, Version 21H1, eingeführt.
Ab Windows 10, Version 21H1, behält das System das bestehende Verhalten der eingeschränkten Funktion unvirtualizedResources sowie der Eigenschaften RegistryWriteVirtualization und FilesystemWriteVirtualization bei. Darüber hinaus bietet das System ihrer App neuerdings die Möglichkeit, bestimmte Ordner und/oder Registrierungsschlüssel zu deklarieren, die der Virtualisierung entzogen werden sollen.
- Es können nur Speicherorte im Dateisystem deklariert werden, die sich innerhalb von
%USERPROFILE%\AppData
befinden. - Es können nur Speicherorte in der Registrierung innerhalb von HKCU deklariert werden.
Im Folgenden sehen Sie ein Beispiel.
<!-- 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>
Hinweis
Wenn Ihre App sowohl die vor Windows 10, Version 21H1, als auch die ab Windows 10, Version 21H1, gültige Syntax deklariert, wird die alte Deklaration für Versionen vor Windows 10, Version 21H1, verwendet, während die neue Deklaration in Windows 10, Version 21H1 und höher, verwendet wird.
Mechanismen vor Windows 10, Version 21H1
In herkömmlichen Umgebungen können Apps Dateien an den meisten Stellen im Dateisystem erstellen, aktualisieren und löschen. Außerdem können sie Einträge in der Windows-Registrierung erstellen, aktualisieren und löschen. Diese Dateien und Registrierungseinträge sind für andere Apps im System sichtbar, obwohl dies häufig nicht erforderlich ist werden. Wenn die App deinstalliert wird, bleiben diese Dateien und Registrierungseinträge außerdem häufig zurück und führen zu unnützer Unordnung.
In der universellen Windows-Plattform (UWP) werden solche Dateien und Registrierungseinträge virtualisiert, sodass sie nur für die App sichtbar sind, die sie schreibt. Und sie werden entfernt, wenn die App deinstalliert wird. Es gibt jedoch gültige Szenarien, in denen es für die App sinnvoll ist, dass solche Dateien und Registrierungseinträge für andere Apps sichtbar sind. Außerdem kann es für andere Apps erforderlich sein, dass diese Dateien und Einträge auch dann beibehalten werden, wenn die App deinstalliert wurde, die sie geschrieben hat.
MSIX-Standardverhalten
Standort | Context | Beschreibung |
---|---|---|
HKCU | Installationszeit |
|
HKCU | Bearbeitungszeit |
|
HKLM | Installationszeit |
|
HKLM | Bearbeitungszeit |
|
Bekannte Ordner | Installationszeit |
|
AppData | Bearbeitungszeit |
|
Die eingeschränkte Funktion unvirtualizedResources
Hinweis
Unterstützung für die eingeschränkte Funktion unvirtualizedResources
wurde in Windows 10, Version 1903 (10.0, Build 18362) eingeführt, auch bekannt als Windows 10-Update aus Mai 2019.
Ihre App kann die eingeschränkte Funktion unvirtualizedResources
deklarieren und die Eigenschaften RegistryWriteVirtualization und/oder FilesystemWriteVirtualization auf true
festlegen, um Schreibzugriff auf HKCU und/oder auf AppData zu erhalten. Dies soll den Fall ermöglichen, dass Ihre App Einträge schreiben muss, die dann für andere Prozesse außerhalb des Pakets sichtbar sind. Beispielsweise schreiben Spiele Speicherdaten in AppData, und diese Daten müssen auch nach der Deinstallation des Spiels erhalten bleiben.
Eigenschaft | Beschreibung |
---|---|
RegistryWriteVirtualization=disabled | Schreibvorgänge in HKCU erfolgen am nicht virtualisierten Speicherort, sind für andere Prozesse außerhalb des Pakets sichtbar und werden bei der Deinstallation der App nicht bereinigt. |
FilesystemWriteVirtualization=disabled | Schreibvorgänge in AppData erfolgen am nicht virtualisierten Speicherort, sind für andere Prozesse außerhalb des Pakets sichtbar und werden bei der Deinstallation der App nicht bereinigt. |
Durch diesen Mechanismus wird die Virtualisierung von HKCU und/oder AppData vollständig deaktiviert, was dem Hauptziel zuwiderläuft. Es ist kein Tool für detailgenaue Einstellungen und übersteigt häufig die Anforderungen einer bestimmten App.