¿Por qué diferentes procesos ven diferentes instancias de la carpeta System32?

10

Estoy ejecutando Windows 8 Enterprise x64. Ingresé usando una cuenta del grupo de Administradores. Cuando abro el Explorador de Windows o un símbolo del sistema, puedo ver el archivo cdd.dll:

Explorador de Windows


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

 Directory of C:\Windows\system32

07/25/2012  09:49 PM           199,680 cdd.dll

Pero si abro un cuadro de diálogo Abrir archivo desde el navegador Chrome, Visual Studio u otras aplicaciones (todas son aplicaciones de 32 bits) y navego a, C:\Windows\system32entonces no existe dicho archivo (el filtro está configurado para mostrar Todos los archivos). Y si invoco el elemento del menú contextual "Abrir ventana de comandos aquí" usando Shift + RightClick en el cuadro de diálogo Abrir archivo y dirlo escribo confirma que no existe dicho archivo:

Abrir cuadro de diálogo de archivo


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 efecto no es específico para cdd.dll, muchos otros archivos también difieren. Me han dicho que esto es un efecto de la virtualización del sistema de archivos , de lo que sé muy poco.

¿Podría explicarme o darme una referencia que explique cómo funciona esto realmente? ¿Existen en realidad varias instancias diferentes de la System32carpeta? ¿Cuál es su ubicación física en el disco? ¿Es posible acceder desde un archivo de proceso de 32 bits en una System32carpeta diferente a la que se muestra a los procesos de 32 bits de forma predeterminada?

Vladimir Reshetnikov
fuente
¿Aparecen en alguna aplicación x64? Tengo el presentimiento de que Windows "oculta" los controladores de 64 bits (cdd.dll es un controlador de pantalla) de las aplicaciones de 32 bits.
Nathan C
Sí, todas las aplicaciones de 64 bits que permiten explorar el sistema de archivos (por ejemplo, tienen un cuadro de diálogo Abrir archivo) muestran los mismos archivos que el Explorador de Windows.
Vladimir Reshetnikov
@VladimirReshetnikov ¿Hay algo que todavía no entiendas? Editaste tu pregunta pero no incluiste más detalles, tampoco aceptaste ninguna de las respuestas. ¿Necesitas algo más aclarado?
Scott Chamberlain
@ScottChamberlain Acabo de editar etiquetas. Tu respuesta es muy buena. ¡Gracias!
Vladimir Reshetnikov

Respuestas:

11

El problema es la redirección de carpetas . Si un programa de 32 bits intenta acceder a la %windir%\System32carpeta, será redirigido invisiblemente al %windir%\SysWOW64directorio, esto es para la compatibilidad de aplicaciones de 32/64 bits.

Todos los archivos en System32 son de 64 bits, sin embargo, si un programa se escribió incorrectamente, pueden haber codificado el System32 en su programa al buscar un archivo DLL. Para evitar bloqueos aleatorios de programas de programas escritos incorrectamente, Microsoft lo redirige.

Si necesita acceder a la carpeta System32 y no a la carpeta SysWOW64, navegue a la carpeta "oculta" %windir%\sysnativeque lo llevará a la System32carpeta "real" y podrá explorar la carpeta como de costumbre.

Scott Chamberlain
fuente
%windir%es una variable de entorno, podría escribirlo así en Windows y funcionaría, el 99% del tiempo representaC:\Windows
Scott Chamberlain
4

WOW64 (Windows en Windows 64 bits) utiliza diversas tecnologías / técnicas para admitir aplicaciones de 32 bits. Entre ellos se encuentran los redirectores de carpetas y registros.

Windows Dev Center: escritorio que ejecuta aplicaciones de 32 bits

Brian
fuente
Y más específicamente, información sobre los perfiles de compatibilidad de aplicaciones, que es lo que hace que esta magia suceda.
David Hoelzer