Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Visão geral
O recurso de virtualização flexível fornece uma maneira de seu aplicativo declarar que alguns de seus arquivos e entradas do Registro devem estar visíveis para outros aplicativos; e que eles devem persistir na desinstalação do aplicativo. Todos os outros arquivos e entradas do Registro não estão visíveis para outros aplicativos; e são removidos na desinstalação.
Como controlar a virtualização de locais selecionados
Observação
O comportamento descrito nesta seção foi introduzido no Windows 10, versão 21H1.
A partir do Windows 10, versão 21H1, o sistema mantém o comportamento existente da funcionalidade restrita unvirtualizedResources e as propriedades RegistryWriteVirtualization e FilesystemWriteVirtualization . Além disso, o sistema adiciona a capacidade do aplicativo de declarar pastas específicas e/ou chaves do Registro que você deseja que não sejamvirtualizadas.
- Você pode declarar apenas os locais do sistema de arquivos que estão dentro
%USERPROFILE%\AppData. - Você pode declarar apenas os locais do Registro que estão dentro do HKCU.
Aqui está um exemplo.
<!-- 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>
Observação
Se seu aplicativo declarar a sintaxe pré-Windows 10, versão 21H1 e Windows 10, versão 21H1, a declaração antiga será usada em versões pré-Windows 10, versão 21H1, enquanto a nova declaração será usada no pré-Windows 10, versão 21H1 e posterior.
Mecanismos anteriores ao Windows 10, versão 21H1
Em ambientes tradicionais, os aplicativos podem criar, atualizar e excluir arquivos na maioria dos locais no sistema de arquivos. E eles podem criar, atualizar e excluir entradas no Registro do Windows. Esses arquivos e entradas do Registro são visíveis para outros aplicativos no sistema, mesmo que muitas vezes não precisem ser. Além disso, quando o aplicativo é desinstalado, esses arquivos e entradas do Registro geralmente são deixados para trás e se tornam desordenados.
Na UWP (Plataforma Universal do Windows), esses arquivos e entradas do Registro são virtualizados para que somente o aplicativo que os grava possa vê-los. E eles são removidos quando o aplicativo é desinstalado. Mas há cenários válidos em que o aplicativo deseja que esses arquivos e entradas do Registro fiquem visíveis para outros aplicativos. Além disso, outros aplicativos podem exigir que esses arquivos e entradas persistam mesmo após o aplicativo que os escreveu ser desinstalado.
Comportamento padrão do MSIX
| Localização | Contexto | Descrição |
|---|---|---|
| HKCU | Tempo de instalação |
|
| HKCU | Tempo de execução |
|
| HKLM | Tempo de instalação |
|
| HKLM | Tempo de execução |
|
| Pastas conhecidas | Tempo de instalação |
|
| Dados do aplicativo | Tempo de execução |
|
A funcionalidade restrita unvirtualizedResources
Observação
O suporte para a unvirtualizedResources funcionalidade restrita foi introduzido no Windows 10, versão 1903 (10.0; Build 18362), também conhecido como Atualização de maio de 2019 do Windows 10.
Seu aplicativo pode declarar a unvirtualizedResources capacidade restrita e definir as propriedades RegistryWriteVirtualization e/ou FilesystemWriteVirtualization para true, a fim de obter acesso de gravação ao HKCU e/ou ao AppData. Isso é para possibilitar a situação em que seu aplicativo precisa gravar entradas que sejam visíveis para outros processos fora de seu pacote. Por exemplo, os jogos gravam dados de salvamento no AppData e esses dados precisam persistir mesmo após a desinstalação do jogo.
| Propriedade | Descrição |
|---|---|
| RegistryWriteVirtualization=desabilitado | As gravações no HKCU vão para o local não virtualizado, são visíveis para outros processos fora do pacote e não são limpas quando o aplicativo é desinstalado. |
| FilesystemWriteVirtualization=desativado | As gravações no AppData vão para o local não virtualizado, ficam visíveis para outros processos fora do pacote e não são limpas na desinstalação do aplicativo. |
Esse mecanismo desativa completamente a virtualização de HKCU e/ou AppData, o que vai contra o objetivo principal. Não é uma ferramenta refinada e geralmente excede os requisitos de um determinado aplicativo.