Por que processos diferentes veem instâncias diferentes da pasta System32?

10

Estou executando o Windows 8 Enterprise x64. Eu fiz logon usando uma conta do grupo Administradores. Quando abro o Windows Explorer ou um prompt de comando, posso ver o arquivo cdd.dll :

C:\Windows\system32>dircdd.dllVolumeindriveChasnolabel.VolumeSerialNumberis▨▨▨▨-▨▨▨▨DirectoryofC:\Windows\system3207/25/201209:49PM199,680cdd.dll

MasseeuabrirumacaixadediálogoAbrirarquivodonavegadorChrome,VisualStudiooualgunsoutrosaplicativos(todoselessãoaplicativosde32bits)enavegarparaC:\Windows\system32,nãoháessearquivo(ofiltroestádefinidoparamostrarTodosArquivos).Eseeuinvocaroitemdemenudecontexto"Abrir janela de comando aqui" usando Shift + RightClick na caixa de diálogo Abrir arquivo e digite dir ele confirma que não existe tal arquivo:

C:\Windows\System32>dir cdd.dll
 Volume in drive C has no label.
 Volume Serial Number is ▨▨▨▨-▨▨▨▨

 Directory of C:\Windows\System32

File Not Found

Este efeito não é específico para cdd.dll , muitos outros arquivos também são diferentes. Já me disseram que esse é um efeito da virtualização do sistema de arquivos , sobre a qual eu sei muito pouco.

Você poderia me explicar ou me dar uma referência que explique como isso realmente funciona? Na verdade, existem várias instâncias diferentes da pasta System32 . Qual é a sua localização física no disco? É possível acessar a partir de um arquivo de processo de 32 bits em uma pasta System32 diferente da exibida para processos de 32 bits por padrão.

    
por Vladimir Reshetnikov 16.07.2013 / 01:09

2 respostas

11

O problema é o redirecionamento de pasta Se um programa de 32 bits tentar acessar a pasta %windir%\System32 , ele será redirecionado de forma invisível para o diretório %windir%\SysWOW64 , isso é para compatibilidade de aplicativo de 32/64 bits.

Todos os arquivos no System32 são de 64 bits, no entanto, se um programa foi escrito incorretamente, eles podem ter codificado o System32 em seu programa ao procurar uma DLL. Para evitar falhas de programas aleatórios de programas escritos incorretamente, a Microsoft faz esse redirecionamento.

Se você precisar acessar a pasta System32 e não a pasta SysWOW64, navegue até a pasta "oculta" %windir%\sysnative , que levará você à pasta "real" System32 e poderá navegar na pasta como normal.

    
por 16.07.2013 / 03:23
4

O WOW64 (Windows no Windows 64bit) usa várias tecnologias / técnicas para suportar aplicativos de 32 bits. Entre esses, estão os redirecionadores de pasta e registro.

Windows Dev Center: executável em 32 bits Aplicações

    
por 16.07.2013 / 02:12