Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Información general
La característica de virtualización flexible proporciona una manera de que la aplicación declare que algunos conjuntos de sus archivos y entradas del Registro deben ser visibles para otras aplicaciones; y que deben conservarse en la desinstalación de la aplicación. Todos los demás archivos y entradas del Registro no son visibles para otras aplicaciones; y se quitan al desinstalar.
Cómo controlar la virtualización de ubicaciones seleccionadas
Nota:
El comportamiento descrito en esta sección se introdujo en Windows 10, versión 21H1.
A partir de Windows 10, versión 21H1, el sistema conserva el comportamiento existente de la funcionalidad restringida unvirtualizedResources y las propiedades RegistryWriteVirtualization y FilesystemWriteVirtualization . Además, el sistema agrega la posibilidad de que la aplicación declare carpetas específicas o claves del Registro que desea no virtualizar.
- Solo puede declarar ubicaciones del sistema de archivos que están dentro de
%USERPROFILE%\AppData
. - Solo puede declarar ubicaciones del Registro que están dentro de HKCU.
Este es un ejemplo.
<!-- 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>
Nota:
Si la aplicación declara la sintaxis anterior a Windows 10, versión 21H1 y Windows 10, versión 21H1, la declaración anterior se usará en versiones anteriores a Windows 10, versión 21H1, mientras que la nueva declaración se usará en versiones anteriores a Windows 10, versión 21H1 y posteriores.
Mecanismos anteriores a Windows 10, versión 21H1
En entornos tradicionales, las aplicaciones pueden crear, actualizar y eliminar archivos en la mayoría de los lugares del sistema de archivos. Y pueden crear, actualizar y eliminar entradas en el Registro de Windows. Esos archivos y entradas del Registro son visibles para otras aplicaciones del sistema, aunque a menudo no es necesario. Además, cuando se desinstala la aplicación, esos archivos y entradas del Registro a menudo se dejan atrás y se vuelven desordenados.
En la Plataforma universal de Windows (UWP), estos archivos y entradas del Registro se virtualizan para que solo la aplicación que los escriba pueda verlos. Y se quitan cuando se desinstala la aplicación. Pero hay escenarios válidos en los que la aplicación quiere que dichos archivos y entradas del Registro sean visibles para otras aplicaciones. Además, es posible que otras aplicaciones requieran que esos archivos y entradas persistan incluso después de desinstalar la aplicación que los escribió.
Comportamiento predeterminado de MSIX
Ubicación | Contexto | Descripción |
---|---|---|
HKCU | Tiempo de instalación |
|
HKCU | Tiempo de ejecución |
|
HKLM | Tiempo de instalación |
|
HKLM | Tiempo de ejecución |
|
Carpetas conocidas | Tiempo de instalación |
|
AppData | Tiempo de ejecución |
|
La funcionalidad restringida unvirtualizedResources
Nota:
La compatibilidad con la unvirtualizedResources
funcionalidad restringida se introdujo en Windows 10, versión 1903 (10.0; Compilación 18362), también conocida como actualización de mayo de 2019 de Windows 10.
La aplicación puede declarar la unvirtualizedResources
funcionalidad restringida y establecer las propiedades RegistryWriteVirtualization y/o FilesystemWriteVirtualization en true
, para obtener acceso de escritura a HKCU y/o a AppData. Esto es para habilitar el caso en el que la aplicación necesita escribir entradas que luego son visibles para otros procesos fuera de su paquete. Por ejemplo, los juegos escriben datos guardados en AppData y esos datos deben conservarse incluso después de desinstalar el juego.
Propiedad | Descripción |
---|---|
RegistryWriteVirtualization=disabled | Las escrituras en HKCU van a la ubicación no virtualizada, son visibles para otros procesos fuera del paquete y no se limpian en la desinstalación de la aplicación. |
FilesystemWriteVirtualization=disabled | Las escrituras en AppData van a la ubicación no virtualizada, son visibles para otros procesos fuera del paquete y no se limpian en la desinstalación de la aplicación. |
Este mecanismo desactiva la virtualización HKCU o AppData por completo, que va en contra del objetivo principal. No es una herramienta específica y a menudo supera los requisitos de una aplicación determinada.