TL; DR:
Resumindo, não, não é necessário ; eles poderiam ter usado uma única pasta e, não, o Windows não se apresenta de maneira diferente para um programa sendo executado de um local ou de outro.
Bem, todo mundo parece estar opinando sobre isso, então vou jogar meus 2 ¢. Outros já especulam sobre as razões por que motivo a Microsoft escolheu para criar pastas de nível superior separadas para versões de programas de 32 bits e 64 bits, então eu vou deixar essa parte (a melhor razão foi a explicação de David que é como um conveniência aos programadores). É claro que, mesmo assim, não aborda bem a questão direta, por que isso é necessário? , para o qual a resposta é presumivelmente: não é .
Em vez disso, abordarei o corpo principal da pergunta
O Windows, de alguma forma, se apresenta de maneira diferente para um programa que está ficando sem "Arquivos de Programas (x86)"?
Na verdade, não, mas a localização do programa pode afetar o comportamento, mas não da maneira que você pensaria.
Quando você executa um programa, o Windows configura um ambiente para executá-lo (quero dizer em termos de memória, endereçamento etc., não apenas variáveis de ambiente). Esse ambiente depende do conteúdo do executável (os programas de 32 e 64 bits diferem internamente). Quando você executa um programa de 32 bits em um sistema de 64 bits, ele é executado no subsistema de 32 bits que emula um ambiente de 32 bits. Chama-se WoW64 (WoW64 significa Windows no Windows 64 bits ) e é semelhante à forma como os aplicativos de 16 bits seriam executados no XP usando o NTVDM .
Quando você executa um programa com ou sem privilégios de administrador, ele afeta a forma como é executado, mas o local não deve afetá-lo (embora existam alguns exemplos de dependência de local, como alguns drivers, por exemplo).
(Estou usando um computador diferente, por isso não posso confiar no histórico do navegador para voltar atrás, mas outro dia, ao responder a essa pergunta SU , acabei com essa pergunta SO, que me levou ao Google PROCESSOR_ARCHITEW6432, que levou a essa pergunta SO e publicação do blog da Microsoft .)
Em algum lugar ao longo do caminho, li um post sobre StackOverflow sobre como a variável ambiente %processor_architecutre%
fornece resultados diferentes, dependendo de onde você executa o prompt de comando (tentarei encontrar a citação exata).
A resposta acabou sendo válida se a versão de 32 ou 64 bits do prompt de comando foi executada (ou seja, de System32\
ou SysWoW64\
). Em outras palavras, embora o local pareça afetar o comportamento do programa, é apenas porque existem versões diferentes do programa, não porque o Windows trata a pasta de uma maneira especial.
Isso faz sentido, porque o conteúdo do arquivo executável determina se é de 32 ou 64 bits, para que você possa colocar uma cópia de 32 e 64 bits do mesmo programa (por exemplo, foobar32.exe
e foobar64.exe
) na mesma pasta e quando você executá-los, eles serão carregados corretamente (a versão de 64 bits será executada nativamente e a de 32 bits será executada na camada de emulação WoW64).
FreePascal permite que você instale as versões DOS e Windows e vão na mesma pasta: %programfiles%\FreePascal
. Ele gerencia as diferentes arquiteturas, mantendo arquivos executáveis ( .exe
, .sys
, .dll
, .ovr
, etc.) em pastas separadas e compartilhar arquivos de recursos como imagens,-fonte arquivos, etc.) não há nenhuma razão técnica que isso não poderia também ser feito por 32 e Versões de 64 bits de um programa. Como David disse, é mais fácil para o programador se eles forem mantidos separados (por exemplo, usando variáveis para fazer parecer que há apenas um conjunto de arquivos etc.)