Redirecionador do Registro
O redirecionador do Registro isola aplicativos de 32 bits e 64 bits fornecendo exibições lógicas separadas de determinadas partes do registro em WOW64. O redirecionador do Registro intercepta chamadas de registro de 32 bits e 64 bits para suas respectivas exibições de registro lógico e as mapeia para o local correspondente do registro físico. O processo de redirecionamento é transparente para o aplicativo. Portanto, um aplicativo de 32 bits pode acessar dados do Registro como se estivessem em execução no Windows de 32 bits, mesmo que os dados sejam armazenados em um local diferente no Windows de 64 bits.
Windows 10 no ARM: além da exibição lógica de 32 bits para aplicativos x86, Windows 10 no ARM inclui uma exibição lógica separada para aplicativos ARM de 32 bits.
Um subconjunto de chaves em caminhos de registro redirecionados são compartilhados. As chamadas do Registro de 32 bits para chaves compartilhadas não são redirecionadas. Em vez disso, uma cópia física da chave é mapeada para cada exibição lógica do Registro. Para obter uma lista de chaves redirecionadas e chaves compartilhadas, consulte Chaves do Registro Afetadas por WOW64.
Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Para habilitar a interoperabilidade do aplicativo por meio de COM e outros mecanismos, um subconjunto de chaves do Registro redirecionadas também é refletido. O processo de reflexão do Registro copia chaves e valores do Registro entre duas exibições do Registro para mantê-las sincronizadas. A reflexão do Registro foi removida a partir do Windows 7 e do Windows Server 2008 R2. Para obter mais informações, consulte Reflexão do Registro.
O cenário a seguir ilustra o uso dessas exibições lógicas:
- Um aplicativo x86 de 32 bits verifica a existência da seguinte chave do Registro: HKEY_LOCAL_MACHINE\Software\Hello. Se a chave não existir, o aplicativo a criará com um valor padrão de "Olá, mundo x86 de 32 bits"; caso contrário, ele lê e exibe o valor.
- O mesmo aplicativo é modificado para gravar "Olá, mundo de 64 bits" em vez de "Olá, mundo x86 de 32 bits" e recompilado como um aplicativo x64 ou ARM64 de 64 bits.
- Windows 10 no ARM: o mesmo aplicativo é modificado para gravar "Olá, mundo arm de 32 bits" e recompilado como um aplicativo ARM de 32 bits.
- Quando o aplicativo x86 de 32 bits é executado no Windows de 64 bits, ele exibe "Hello 32 bits x86 world". Quando o aplicativo de 64 bits é executado, ele exibe "Olá, mundo de 64 bits". Windows 10 no ARM: quando o aplicativo ARM de 32 bits é executado no WINDOWS ARM64 de 64 bits, ele exibe "Olá, mundo arm de 32 bits". Todos os aplicativos chamam as mesmas funções do Registro com o mesmo identificador predefinido e o mesmo nome de chave; a diferença é que cada aplicativo opera em sua exibição lógica do Registro e cada exibição é mapeada para um local físico separado do Registro, o que mantém todas as versões da cadeia de caracteres intactas.
As chaves redirecionadas são mapeadas para locais físicos em Wow6432Node. Por exemplo, HKEY_LOCAL_MACHINE\Software é redirecionado para HKEY_LOCAL_MACHINE\Software\Wow6432Node. No entanto, o local físico das chaves redirecionadas deve ser considerado reservado pelo sistema. Os aplicativos não devem acessar o local físico de uma chave diretamente, pois esse local pode ser alterado. Para obter mais informações, consulte Acessando um modo de exibição de registro alternativo.
Windows 10 no ARM: as chaves ARM redirecionadas de 32 bits são mapeadas para locais físicos em WowAA32Node.
Para ajudar aplicativos de 32 bits que gravam REG_SZ ou REG_EXPAND_SZ dados que contêm %ProgramFiles% ou %commonprogramfiles% no registro, o WOW64 intercepta essas operações de gravação e as substitui por "%ProgramFiles(x86)%" e "%commonprogramfiles(x86)%". Por exemplo, se o diretório Arquivos de Programas estiver na unidade C, "%ProgramFiles(x86)%" expandirá para "C:\Arquivos de Programas (x86)". A substituição ocorrerá somente se as seguintes condições forem atendidas:
- A cadeia de caracteres deve começar com %ProgramFiles% ou %commonprogramfiles%. Se a cadeia de caracteres começar com um espaço ou qualquer caractere diferente de %, ela não será substituída.
- O caso de %ProgramFiles% ou %commonprogramfiles% deve ser exatamente como mostrado porque a comparação de cadeia de caracteres diferencia maiúsculas de minúsculas. Por exemplo, se a cadeia de caracteres começar com %CommonProgramFiles% em vez de %commonprogramfiles%, ela não será substituída.
- A cadeia de caracteres não pode exceder MAX_PATH*2+15 caracteres. Se exceder esse comprimento, ele não será substituído.
- A chave não pode ser aberta com KEY_WOW64_64KEY. Esse sinalizador especifica que as operações na chave devem ser executadas na exibição do Registro de 64 bits, portanto, elas não são substituídas. Para obter mais informações, consulte Acessando um modo de exibição de registro alternativo.
Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: O sinalizador KEY_WOW_64_64KEY não afeta se uma chave é substituída. Esse sinalizador afeta a substituição a partir do Windows 7 e do Windows Server 2008 R2.
Além disso, REG_SZ ou REG_EXPAND_SZ chaves que contêm o system32 são substituídas por syswow64. A cadeia de caracteres deve começar com o caminho apontando para ou em %windir%\system32. A comparação de cadeia de caracteres não diferencia maiúsculas de minúsculas. As variáveis de ambiente são expandidas antes de corresponder ao caminho, portanto, todos os seguintes caminhos são substituídos: %windir%\system32, %SystemRoot%\system32 e C:\windows\system32. Esse patch é aplicado somente às chaves que foram refletidas antes do Windows 7.
Para obter mais informações, consulte estes tópicos:
- Reflexão do Registro
- Chaves do Registro afetadas pelo WOW64
- Acessando um modo de exibição de registro alternativo
- Exemplo de redirecionamento do Registro no WOW64
- Acesso ao Registro Remoto no Windows de 64 bits