
Por razões óbvias, a Microsoft não faz uma edição de 32 bits do Windows 11, mas o SO ainda tem que executar décadas de aplicativos de 32 bits, e há muitos deles. A solução de Redmond é duas pastas de sistema: System32 para arquivos nativos de 64 bits e SysWOW64 para cópias de 32 bits, além do que a Microsoft chama de redirecionador de sistema de arquivos WOW64, que secretamente envia aplicativos de 32 bits para SysWOW64 quando pedem o System32.
No meu PC comJanelas 11 26H2Ambas as pastas têm um kernel32.dll, e sem surpresa, os dois arquivos têm tamanhos diferentes, já que um é construído para aplicativos 64-bit e o outro para aplicativos 32-bit.

Imagine se a Microsoft fosse capaz de anunciar que eles estão terminando o suporte para 32 bits, como a Apple fez, e talvez o Windows não teria toda essa bagagem!
Por que System32 tem arquivos 64-bit e SysWOW64 tem 32-bit
Nos dias do Windows de 16 bits, os arquivos do sistema foram para C:\Windows\System. Quando o Windows de 32 bits chegou, a Microsoft adicionou C:\Windows\System32 para os arquivos de 32 bits, que é de onde vem o "32".
Quando o Windows de 64 bits apareceu, muitos programas tinham o caminho do System32 codificado em vez de pedir por ele através da função GetSystemDirectory. Veterano da Microsoft.Raymond Chen.explicado em seuColuna confidencial do Windowsque uma vez recompilado como 64-bit, aqueles programas ainda olharam no System32, agora esperando arquivos 64-bit. Arquivos em lote tinham um problema similar, como um script rodando System32\reg.exe teria editado a cópia de 32 bits do registro se a pasta tivesse ferramentas de 32 bits nele.
A equipe do Windows decidiu que o System32 tem o que combina com o sistema operacional. MicrosoftDocumentação do sistema de arquivos Redirectordiz"O diretório %windir%\System32 está reservado para aplicativos 64 bits em Windows 64 bits."A maioria dos DLLs também mantinha seus nomes de arquivos quando a Microsoft construiu versões de 64 bits, então kernel32.dll,Um nome que segue as regras do MS-DOS., é kernel32.dll em ambas as pastas, e as cópias de 32 bits precisavam de sua pasta dedicada.
"O 32 é apenas parte do nome e não significa nada,"Chen escreveu, comparando-o com marcas como KFC e HSBC que passam por suas iniciais hoje. Ele acrescentou que em um mundo mais ideal, a pasta seria chamadaSysExec., já que contém arquivos correspondentes ao programa que está sendo executado.
WOW64 significa Windows 32-bit no Windows 64-bit (engraçado, eu sei), camada de compatibilidade da Microsoft para aplicativos 32-bit, então o "64" no SysWOW64 se refere ao sistema operacional enquanto os arquivos dentro são 32-bit. Ironicamente, a pasta do sistema com 64 em seu nome é a que os aplicativos 64 bits não usam.
Como o Windows 11 redireciona silenciosamente aplicativos 32 bits para SysWOW64
De acordo com a MicrosoftGuia para executar aplicações de 32 bits, um processo de 32 bits não pode carregar um DLL de 64 bits para execução, e vice-versa. Sem redirecionamento, um programa de 32 bits carregando kernel32.dll do System32 teria um arquivo que não pode usar.
WOW64 troca esses caminhos no fundo sempre que um aplicativo de 32 bits pede por eles no Windows x64.
| O que um aplicativo de 32 bits pede | Onde as janelas de 64 bits enviam |
|---|---|
| C:\Windows\System32 | C:\Windows\SysWOW64 |
| C:\Windows\ last good\system32 | C:\Windows\ lastbood\SysWOW64 |
| C:\Windows\regedit.exe | C:\Windows\SysWOW64\regedit.exe |
O aplicativo não faz ideia do que aconteceu. Eu abri o Prompt de Comando de 32 bits de C:\Windows\SysWOW64\cmd.exe, e eco%PROCESSOR ARQUITETURA% retornou x86, enquanto o Prompt de Comando regular disse AMD64. Correndo dir C:\Windows\System32\kernel32.dll em ambas as janelas então mostrou dois tamanhos de arquivos diferentes para um caminho idêntico.


Mesmo.Matt Pietrek, então na equipe Visual Studio da Microsoft, caiu nessa. Em um2006 MSDN Artigo da revistaEle escreveu que uma vez listou kernel32.dll em ambas as pastas de um prompt de 32 bits, obteve resultados correspondentes, e arranhou a cabeça por um tempo.
WOW64 também dá 32 bits de aplicativos sua própria visão de registro sob HKEY LOCAL MACHINE\Software\Wow6432 Node através doredirecionador de registro, e define sua %ProgramFiles% variável para Arquivos de Programa (x86).

Estranhamente, se abrir um arquivo redirecionado traz um prompt UAC, a Microsoft diz que redirecionamento não acontece e em vez disso lança a versão 64-bit, então os desenvolvedores devem usar o caminho SysWOW64 ou executar o aplicativo 32-bit como administrador.
Sysnative é uma pasta virtual, então você não vai encontrá-lo em C:\Windows, e 64-bit aplicativos não pode usá-lo. Quando digitei C:\Windows\Sysnative na barra de endereços do File Explorer, que é um aplicativo de 64 bits, o Windows não conseguiu encontrá-lo, mas dir C:\Windows\Sysnative\cmd.exe funcionou bem a partir do Prompt de Comando de 32 bits.

Se eles escolherem fazer isso, os desenvolvedores podem desligar o redirecionamento com a função Wow64DisableWow64FsRedirection, mas isso afeta cada operação de arquivo nesse tópico. Microsoftdocumentaçãoadverte que"Desativar o redirecionamento do sistema de arquivos fará com que o carregamento DLL falhe."
Curiosamente, os editores da TechNet cortaram a explicação Sysnative de Chen de sua coluna para comprimento, então ele postou em seublog em 2010, chamando-o"Uma solução local para um problema local."De volta2008Ele disse a um desenvolvedor para parar de lutar contra o emulador e fazer o instalador de 32 bits lançar um de 64 bits. Concordo, como a maioria dos problemas começa quando um aplicativo de 32 bits tenta agir como um de 64 bits.
Seis pastas System32 estão isentas de redirecionamento da WOW64.
A Microsoft lista seis subpastas System32 que aplicativos 32 bits alcançam sem serem redirecionados.
- C:\Windows\System32\catroot
- C:\Windows\System32\catroot2
- C:\Windows\System32\driverstore
- C:\Windows\System32\drivers\etc
- C:\Windows\System32\logfiles
- C:\Windows\System32\spool
A lista nem sempre foi assim, como driverstore foi redirecionada para Windows Vista, Windows XP, Windows Server 2003 e Windows Server 2008. Microsoft não explica as isenções, mas meu palpite é que essas pastas possuem dados compartilhados, como o arquivo hosts em drivers\etc, que ambos os tipos de aplicativos precisam de uma cópia.
SysArm32 está indo embora no Windows 11 Arm PCs
Em computadores Arm como laptops Snapdragon X, aplicativos x86 de 32 bits vão para SysWOW64, enquanto aplicativos Arm de 32 bits foram redirecionados para uma terceira pasta chamada SysArm32. O que está acontecendo aqui é que WOW64 em Arm64 traduz código x86 com um emulador chamado xtajit.dll, enquanto processadores x64 executam código 32-bit nativo, com Wow64Cpu.dll gerenciando o switch, de acordo com Microsoftdetalhes de implementação.
MicrosoftDocumentação de desenvolvimento de armasAgora diz que o Arm PCs não suporta mais aplicativos de 32 bits, e os binários do sistema na pasta Sysarm32 também são removidos. Aplicativos x86 regulares, 32-bit e 64-bit, continuam correndo através da emulação Prism, que temSuporte AVX e AVX2Ano passado.
A Microsoft poderia ter renomeado System32 há duas décadas e quebrado uma pilha de aplicativos, mas em vez disso construíram um redirecionador, um pseudônimo, e uma lista de isenção em torno do nome antigo, muito parecido com ele mantidoGerente de pilha do Windows 95para programas antigos. Nem tudo sobreviveu ao salto para 64 bits, no entanto, ePinball 3Dé a prova. Pessoalmente, eu teria adorado uma pasta SysExec, mas um nome confuso bate um instalador quebrado qualquer dia. Você teria renomeado?
FONTE: Matéria original