Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Aperçu
La fonctionnalité de virtualisation flexible permet à votre application de déclarer que certains ensembles de ses fichiers et entrées de Registre doivent être visibles par d’autres applications ; et que ceux-ci doivent être conservés lors de la désinstallation de l’application. Tous les autres fichiers et entrées de Registre ne sont pas visibles par d’autres applications ; et sont supprimés lors de la désinstallation.
Comment contrôler la virtualisation des emplacements sélectionnés
Remarque
Le comportement décrit dans cette section a été introduit dans Windows 10, version 21H1.
À partir de Windows 10, version 21H1, le système conserve le comportement existant de la fonctionnalité restreinte unvirtualizedResources , ainsi que les propriétés RegistryWriteVirtualization et FilesystemWriteVirtualization . En outre, le système ajoute la possibilité pour votre application de déclarer des dossiers et/ou des clés de Registre spécifiques que vous souhaitez annuler.
- Vous pouvez déclarer uniquement les emplacements du système de fichiers qui se trouvent dans
%USERPROFILE%\AppData
. - Vous pouvez déclarer uniquement les emplacements du Registre qui se trouvent dans HKCU.
Voici un exemple.
<!-- 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>
Remarque
Si votre application déclare à la fois la syntaxe pré-Windows 10, version 21H1 et Windows 10, version 21H1, l’ancienne déclaration sera utilisée sur les versions antérieures à Windows 10, version 21H1, tandis que la nouvelle déclaration sera utilisée sur les versions antérieures à Windows 10, version 21H1 et ultérieures.
Mécanismes antérieurs à Windows 10, version 21H1
Dans les environnements traditionnels, les applications peuvent créer, mettre à jour et supprimer des fichiers dans la plupart des endroits du système de fichiers. Et ils peuvent créer, mettre à jour et supprimer des entrées dans le Registre Windows. Ces fichiers et entrées de Registre sont visibles par d’autres applications sur le système, même si elles n’ont souvent pas besoin d’être. En outre, lorsque l'application est désinstallée, ces fichiers et entrées de registre restent souvent et entraînent des encombrements.
Dans la plateforme Windows universelle (UWP), ces fichiers et entrées de Registre sont virtualisés afin que seule l’application qui les écrit puisse les voir. Et ils sont supprimés lorsque l’application est désinstallée. Toutefois, il existe des scénarios valides dans lesquels l’application souhaite que ces fichiers et entrées de Registre soient visibles par d’autres applications. En outre, d’autres applications peuvent exiger que ces fichiers et entrées persistent même après la désinstallation de l’application qui les a écrites.
Comportement MSIX par défaut
Emplacement | Contexte | Descriptif |
---|---|---|
HKCU | Heure d’installation |
|
HKCU | Temps d'exécution |
|
HKLM | Heure d’installation |
|
HKLM | Temps d'exécution |
|
Dossiers connus | Heure d’installation |
|
AppData | Temps d'exécution |
|
La fonctionnalité limitée unvirtualizedResources
Remarque
La prise en charge de la unvirtualizedResources
fonctionnalité restreinte a été introduite dans Windows 10, version 1903 (10.0 ; Build 18362), également appelée Mise à jour de Mai 2019 de Windows 10.
Votre application peut déclarer la unvirtualizedResources
capacité restreinte et définir les propriétés RegistryWriteVirtualization et/ou FilesystemWriteVirtualization sur true
, afin d'obtenir l'accès en écriture à HKCU et/ou à AppData. Cela permet d’activer le cas où votre application doit écrire des entrées qui sont ensuite visibles par d’autres processus en dehors de son package. Par exemple, les jeux écrivent des données d’enregistrement dans AppData et ces données doivent être conservées même après la désinstallation du jeu.
Propriété | Descriptif |
---|---|
RegistryWriteVirtualization=désactivé | Les écritures dans HKCU vont à l’emplacement non virtuel, sont visibles par d’autres processus en dehors du package et ne sont pas nettoyées lors de la désinstallation de l’application. |
FilesystemWriteVirtualization=désactivé | Les écritures dans AppData vont à l’emplacement non virtuel, sont visibles par d’autres processus en dehors du package et ne sont pas nettoyées lors de la désinstallation de l’application. |
Ce mécanisme désactive complètement la virtualisation HKCU et/ou AppData , ce qui va à l’encontre de l’objectif principal. Il ne s’agit pas d’un outil affiné, et il dépasse souvent les exigences d’une application donnée.