Redirecionador do Sistema de Arquivos

O diretório %windir%\System32 é reservado para aplicativos de 64 bits no Windows de 64 bits. A maioria dos nomes de arquivo DLL não foi alterada quando as versões de 64 bits das DLLs foram criadas, portanto, as versões de 32 bits das DLLs são armazenadas em um diretório diferente. WOW64 oculta essa diferença usando um redirecionador do sistema de arquivos.

Na maioria dos casos, sempre que um aplicativo de 32 bits tenta acessar %windir%\System32, %windir%\lastgood\system32 ou %windir%\regedit.exe, o acesso é redirecionado para um caminho específico da arquitetura.

Observação

Esses caminhos são fornecidos somente para referência. Para compatibilidade, os aplicativos não devem usar esses caminhos diretamente. Em vez disso, eles devem chamar as APIs descritas abaixo.

 

Caminho Original Caminho redirecionado para processos x86 de 32 bits Caminho redirecionado para processos arm de 32 bits
%windir%\System32 %windir%\SysWOW64 %windir%\SysArm32
%windir%\lastgood\system32 %windir%\lastgood\SysWOW64 %windir%\lastgood\SysArm32
%windir%\regedit.exe %windir%\SysWOW64\regedit.exe %windir%\ SysArm32\regedit.exe

 

Se o acesso fizer com que o sistema exiba o prompt do UAC, o redirecionamento não ocorrerá. Em vez disso, a versão de 64 bits do arquivo solicitado é iniciada. Para evitar esse problema, especifique o diretório SysWOW64 para evitar o redirecionamento e garantir o acesso à versão de 32 bits do arquivo ou execute o aplicativo de 32 bits com privilégios de administrador para que o prompt do UAC não seja exibido.

Windows Server 2003 e Windows XP: Não há suporte para UAC.

Determinados subdiretórios estão isentos de redirecionamento. O acesso a esses subdiretórios não é redirecionado para %windir%\SysWOW64:

%windir%\system32\catroot
%windir%\system32\catroot2
%windir%\system32\driverstore
%windir%\system32\drivers\etc
%windir%\system32\logfiles
%windir%\system32\spool

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: %windir%\system32\driverstore é redirecionado.

Para recuperar o nome do diretório do sistema de 32 bits, os aplicativos de 64 bits devem usar a função GetSystemWow64Directory2 (Windows 10, versão 1511) ou a função GetSystemWow64Directory.

Os aplicativos devem usar a função SHGetKnownFolderPath para determinar o nome do diretório %ProgramFiles%.

Windows Server 2003 e Windows XP: Os aplicativos devem usar a função SHGetSpecialFolderPath para determinar o nome do diretório %ProgramFiles%.

Os aplicativos podem controlar o redirecionador do sistema de arquivos WOW64 usando as funções Wow64DisableWow64FsRedirection, Wow64EnableWow64FsRedirection e Wow64RevertWow64FsRedirection . Desabilitar o redirecionamento do sistema de arquivos afeta todas as operações de arquivo executadas pelo thread de chamada, portanto, ele deve ser desabilitado somente quando necessário para uma única chamada CreateFile e habilitado novamente imediatamente após o retorno da função. Desabilitar o redirecionamento do sistema de arquivos por períodos mais longos pode impedir que aplicativos de 32 bits carreguem DLLs do sistema, fazendo com que os aplicativos falhem.

Aplicativos de 32 bits podem acessar o diretório do sistema nativo substituindo %windir%\Sysnative por %windir%\System32. O WOW64 reconhece o Sysnative como um alias especial usado para indicar que o sistema de arquivos não deve redirecionar o acesso. Esse mecanismo é flexível e fácil de usar, portanto, é o mecanismo recomendado para ignorar o redirecionamento do sistema de arquivos. Observe que os aplicativos de 64 bits não podem usar o alias Sysnative, pois ele é um diretório virtual, não um real.

Windows Server 2003 e Windows XP: O alias sysnative foi adicionado a partir do Windows Vista.