Partilhar via


Redirecionador de Registro

O redirecionador de registro isola aplicativos de 32 bits e 64 bits fornecendo exibições lógicas separadas de certas partes do registro no WOW64. O redirecionador de registro interceta chamadas de registro de 32 bits e 64 bits para suas respetivas exibições lógicas do registro e as mapeia para o local de registro físico correspondente. O processo de redirecionamento é transparente para o aplicativo. Portanto, um aplicativo de 32 bits pode acessar dados do Registro como se estivesse sendo executado no Windows de 32 bits, mesmo que os dados estejam armazenados em um local diferente no Windows de 64 bits.

Windows 10 em ARM: Além da vista lógica de 32 bits para aplicações x86, o Windows 10 em ARM inclui uma vista lógica separada para aplicações ARM de 32 bits.

Um subconjunto de chaves em caminhos de registro redirecionados são compartilhados. As chamadas de registo de 32 bits para chaves partilhadas não são redirecionadas. Em vez disso, uma cópia física da chave é mapeada em cada exibição lógica do Registro. Para obter uma lista de chaves redirecionadas e chaves compartilhadas, consulte Chaves do Registro afetadas pelo WOW64.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Para habilitar a interoperabilidade de aplicativos 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 Registry Reflection.

O cenário a seguir ilustra o uso desses modos de exibição lógicos:

  • 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 "Hello 32-bit x86 world"; caso contrário, ele lê e exibe o valor.
  • O mesmo aplicativo é modificado para escrever "Hello 64-bit world" em vez de "Hello 32-bit x86 world" e recompilado como um aplicativo x64 ou ARM64 de 64 bits.
  • Windows 10 em ARM: O mesmo aplicativo é modificado para escrever "Hello 32-bit ARM world" 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-bit x86 world". Quando o aplicativo de 64 bits é executado, ele exibe "Hello 64-bit world". Windows 10 em ARM: Quando o aplicativo ARM de 32 bits é executado no Windows ARM64 de 64 bits, ele exibe "Hello 32-bit ARM world". Todos os aplicativos chamam as mesmas funções de 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, 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, a localização física das chaves redirecionadas deve ser considerada reservada pelo sistema. Os aplicativos não devem acessar diretamente o local físico de uma chave, porque esse local pode mudar. Para obter mais informações, consulte acessando um modo de exibição alternativo do Registro.

Windows 10 em ARM: As chaves ARM de 32 bits redirecionadas são mapeadas para locais físicos em WowAA32Node.

Para ajudar aplicativos de 32 bits que gravam REG_SZ ou REG_EXPAND_SZ dados contendo %ProgramFiles% ou %commonprogramfiles% no registro, o WOW64 interceta 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)%" se expandirá para "C:\Arquivos de Programas (x86)". A substituição só ocorre se forem satisfeitas as seguintes condições:

  • 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 este comprimento, não é 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, para que ela não seja substituída. Para obter mais informações, consulte acessando um modo de exibição alternativo do Registro.

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 contendo system32 são substituídas por syswow64. A cadeia de caracteres deve começar com o caminho apontando para ou sob %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 caminhos a seguir são substituídos: %windir%\system32, %SystemRoot%\system32 e C:\windows\system32. Este patch é aplicado apenas às chaves que foram refletidas antes do Windows 7.

Para obter mais informações, consulte os seguintes tópicos: