Virtualizzazione flessibile
Panoramica
La funzionalità di virtualizzazione flessibile consente all'app di dichiarare che alcuni set di file e voci del Registro di sistema devono essere visibili ad altre app e che devono essere mantenuti nella disinstallazione dell'app. Tutti gli altri file e voci del Registro di sistema non sono visibili ad altre app e vengono rimossi durante la disinstallazione.
Come controllare la virtualizzazione delle posizioni selezionate
Nota
Il comportamento descritto in questa sezione è stato introdotto in Windows 10 versione 21H1.
A partire da Windows 10, versione 21H1, il sistema mantiene il comportamento esistente delle funzionalità con restrizioni unvirtualizedResources e le proprietà RegistryWriteVirtualization e FilesystemWriteVirtualization. Inoltre, il sistema aggiunge alla tua app la possibilità di dichiarare cartelle e/o chiavi del Registro di sistema specifiche che vuoi annullare lavirtualizzazione.
- È possibile dichiarare solo i percorsi del file system all'interno
%USERPROFILE%\AppData
di . - È possibile dichiarare solo i percorsi del Registro di sistema all'interno di HKCU.
Ecco un esempio.
<!-- 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
Se l'app dichiara sia la sintassi pre-Windows 10, versione 21H1 che quella di Windows 10, versione 21H1, la dichiarazione precedente verrà usata nelle versioni precedenti a Windows 10, versione 21H1, mentre la nuova dichiarazione verrà usata in versioni precedenti a Windows 10, versione 21H1 e successive.
Meccanismi precedenti a Windows 10, versione 21H1
Negli ambienti tradizionali le app possono creare, aggiornare ed eliminare file nella maggior parte dei casi nel file system. E possono creare, aggiornare ed eliminare voci nel Registro di sistema di Windows. Tali file e voci del Registro di sistema sono visibili ad altre app nel sistema, anche se spesso non devono essere. Inoltre, quando l'app viene disinstallata, i file e le voci del Registro di sistema vengono spesso lasciati indietro e diventano disordinati.
Nella piattaforma UWP (Universal Windows Platform) (UWP), tali file e voci del Registro di sistema vengono virtualizzati in modo che solo l'app che li scrive può visualizzare. E vengono rimossi quando l'app viene disinstallata. Esistono tuttavia scenari validi in cui l'app vuole che tali file e voci del Registro di sistema siano visibili ad altre app. Inoltre, altre app potrebbero richiedere che tali file e voci vengano mantenuti anche dopo la disinstallazione dell'app che li ha scritti.
Comportamento predefinito di MSIX
Ubicazione | Contesto | Descrizione |
---|---|---|
HKCU | Tempo di installazione |
|
HKCU | In fase di esecuzione |
|
HKLM | Tempo di installazione |
|
HKLM | In fase di esecuzione |
|
Cartelle note | Tempo di installazione |
|
Appdata | In fase di esecuzione |
|
Funzionalità unvirtualizedResources
con restrizioni
Nota
Il supporto per la unvirtualizedResources
funzionalità con restrizioni è stato introdotto in Windows 10 versione 1903 (10.0; Build 18362), nota anche come Aggiornamento di Windows 10 (maggio 2019).
L'app può dichiarare la unvirtualizedResources
funzionalità con restrizioni e impostare le proprietà RegistryWriteVirtualization e/o FilesystemWriteVirtualization su true
per ottenere l'accesso in scrittura a HKCU e/o a AppData. Ciò consente di abilitare il caso in cui l'app deve scrivere voci che sono quindi visibili ad altri processi all'esterno del pacchetto. Ad esempio, i giochi scrivono i dati di salvataggio in AppData e che i dati devono essere mantenuti anche dopo la disinstallazione del gioco.
Proprietà | Descrizione |
---|---|
RegistryWriteVirtualization=disabled | Le scritture in HKCU passano alla posizione non virtuale, sono visibili ad altri processi esterni al pacchetto e non vengono pulite durante la disinstallazione dell'app. |
FilesystemWriteVirtualization=disabled | Le scritture in AppData passano alla posizione non virtuale, sono visibili ad altri processi esterni al pacchetto e non vengono pulite durante la disinstallazione dell'app. |
Questo meccanismo disattiva completamente la virtualizzazione HKCU e/o AppData , che va contro l'obiettivo principale. Non è uno strumento con granularità fine e spesso supera i requisiti di una determinata app.