Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
de virtualização do Registro é uma tecnologia de compatibilidade de aplicativos que permite que operações de gravação do Registro com impacto global sejam redirecionadas para locais por usuário. Esse redirecionamento é transparente para aplicativos que lêem ou gravam no registro. É suportado a partir do Windows Vista.
Essa forma de virtualização é uma tecnologia provisória de compatibilidade de aplicativos; A Microsoft pretende removê-lo de futuras versões do sistema operacional Windows, à medida que mais aplicativos são compatíveis com o Windows Vista e versões posteriores do Windows. Portanto, é importante que seu aplicativo não se torne dependente do comportamento da virtualização do registro no sistema.
A virtualização destina-se apenas a fornecer compatibilidade para aplicativos existentes. Os aplicativos projetados para o Windows Vista e versões posteriores do Windows não devem gravar em áreas confidenciais do sistema, nem devem depender da virtualização para solucionar quaisquer problemas. Ao atualizar o código existente para ser executado no Windows Vista e em versões posteriores do Windows, os desenvolvedores devem garantir que os aplicativos armazenem dados apenas em locais por usuário ou em locais de computador dentro de %alluserprofile% que usam corretamente uma lista de controle de acesso (ACL).
Para obter mais informações sobre como criar aplicativos compatíveis com UAC, consulte o Guia do desenvolvedor do UAC .
Visão geral da virtualização
Antes do Windows Vista, os aplicativos eram normalmente executados por administradores. Como resultado, os aplicativos poderiam acessar livremente arquivos do sistema e chaves de registro. Se esses aplicativos fossem executados por um usuário padrão, eles falhariam devido a direitos de acesso insuficientes. O Windows Vista e versões posteriores do Windows melhoram a compatibilidade de aplicativos para esses aplicativos redirecionando automaticamente essas operações. Por exemplo, as operações de registro para o repositório global (HKEY_LOCAL_MACHINE\Software) são redirecionadas para um local por usuário dentro do perfil do usuário conhecido como de armazenamento virtual (HKEY_USERS\<User SID>_Classes\VirtualStore\Machine\Software).
A virtualização do Registro pode ser amplamente classificada nos seguintes tipos:
-
Virtualização do Registro Aberto
-
Se o chamador não tiver acesso de gravação a uma chave e tentar abri-la, a chave será aberta com o acesso máximo permitido para esse chamador.
Se o sinalizador REG_KEY_DONT_SILENT_FAIL estiver definido para a chave, a operação falhará e a chave não será aberta. Para obter mais informações, consulte "Controlando a virtualização do registro" posteriormente neste tópico.
-
Write Registry Virtualization
-
Se o chamador não tiver acesso de gravação a uma chave e tentar gravar um valor nela ou criar uma subchave, o valor será gravado no repositório virtual.
Por exemplo, se um usuário limitado tentar gravar um valor na seguinte chave: HKEY_LOCAL_MACHINE\Software\AppKey1, a virtualização redirecionará a operação de gravação para HKEY_USERS\<SID do usuário>_Classes\VirtualStore\Machine\Software\AppKey1.
-
Virtualização do Registro de Leitura
-
Se o chamador ler de uma chave virtualizada, o registro apresentará uma exibição mesclada dos valores virtualizados (do repositório virtual) e dos valores não virtuais (do repositório global) para o chamador.
Por exemplo, suponha HKEY_LOCAL_MACHINE\Software\ AppKey1 contenha dois valores V1 e V2 e que um usuário limitado grave um valor V3 na chave. Quando o usuário tenta ler valores dessa chave, a exibição mesclada inclui os valores V1 e V2 do repositório global e o valor V3 do repositório virtual.
Observe que os valores virtuais têm precedência sobre os valores globais quando presentes. No exemplo acima, mesmo que a loja global tivesse o valor V3 sob essa chave, o valor V3 ainda seria retornado ao chamador da loja virtual. Se a V3 fosse excluída da loja virtual, a V3 seria retornada da loja global. Em outras palavras, se V3 fosse excluído de HKEY_USERS\<User SID>_Classes\VirtualStore\Machine\Software\AppKey1 mas HKEY_LOCAL_MACHINE\Software\AppKey1 tivesse um valor V3, esse valor seria retornado do repositório global.
Escopo da virtualização do Registro
A virtualização do Registro está habilitada somente para o seguinte:
- Processos interativos de 32 bits.
- Chaves em HKEY_LOCAL_MACHINE\Software.
- Chaves nas quais um administrador pode gravar. (Se um administrador não puder gravar em uma chave, o aplicativo teria falhado em versões anteriores do Windows, mesmo que tenha sido executado por um administrador.)
A virtualização do Registro está desabilitada para o seguinte:
Processos de 64 bits.
Processos que não são interativos, como serviços.
Observe que usar o registro como um mecanismo de comunicação entre processos (IPC) entre um serviço (ou qualquer outro processo que não tenha virtualização habilitada) e um aplicativo não funcionará corretamente se a chave for virtualizada. Por exemplo, se um serviço antivírus atualizar seus arquivos de assinatura com base em um valor definido por um aplicativo, o serviço nunca atualizará seus arquivos de assinatura porque o serviço lê do repositório global, mas o aplicativo grava no repositório virtual.
Processos que representam um usuário. Se um processo tentar uma operação enquanto se faz passar por um utilizador, essa operação não será virtualizada.
Processos de modo kernel, como drivers.
Os processos que requestedExecutionLevel especificados em seus manifestos.
Chaves e subchaves de HKEY_LOCAL_MACHINE\Software\Classes, HKEY_LOCAL_MACHINE\Software\Microsoft\Windowse HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT.
Controlando a virtualização do registro
Além de controlar a virtualização em um nível de aplicativo usando requestedExecutionLevel no manifesto, um administrador pode habilitar ou desabilitar a virtualização por chave para chaves no HKEY_LOCAL_MACHINE\Software. Para fazer isso, use a opção FLAGS do utilitário de linha de comando Reg.exe com os sinalizadores listados na tabela a seguir.
| Bandeira | Significado |
|---|---|
| REG_KEY_DONT_SILENT_FAIL | Esse sinalizador desabilita a virtualização do registro aberto. Se esse sinalizador estiver definido e uma operação aberta falhar em uma chave que tenha a virtualização habilitada, o registro não tentará reabrir a chave. Se esse sinalizador estiver claro, o registro tentará reabrir a chave com acesso MAXIMUM_ALLOWED em vez do acesso solicitado. |
| REG_KEY_DONT_VIRTUALIZE | Esse sinalizador desabilita a virtualização do registro de gravação. Se esse sinalizador for definido e uma operação de criar chave ou definir valor falhar porque o chamador não tem direito de acesso suficiente à chave pai, o registro falhará a operação. Se esse sinalizador estiver limpo, o Registro tentará gravar a chave ou o valor no repositório virtual. O chamador deve ter a KEY_READ direito na chave pai. |
| REG_KEY_RECURSE_FLAG | Se esse sinalizador for definido, os sinalizadores de virtualização do Registro serão propagados a partir da chave pai. Se esse sinalizador estiver claro, os sinalizadores de virtualização do Registro não serão propagados. A alteração desse sinalizador afeta apenas as novas chaves descendentes criadas depois que o sinalizador é alterado. Ele não define ou limpa esses sinalizadores para chaves descendentes existentes. |
O exemplo a seguir mostra o uso do utilitário de linha de comando Reg.exe com a opção FLAGS para consultar o estado dos sinalizadores de virtualização para uma chave.
C:\>reg flags HKLM\Software\AppKey1 QUERY
HKEY_LOCAL_MACHINE\Software\AppKey1
REG_KEY_DONT_VIRTUALIZE: CLEAR
REG_KEY_DONT_SILENT_FAIL: CLEAR
REG_KEY_RECURSE_FLAG: CLEAR
The operation completed successfully.
Sempre que a auditoria é habilitada em uma chave que está sendo virtualizada, um novo evento de auditoria de virtualização é gerado para indicar que a chave está sendo virtualizada (além dos eventos de auditoria usuais). Os administradores podem usar essas informações para monitorar o status da virtualização em seus sistemas.
Tópicos relacionados