Warum werden für verschiedene Prozesse unterschiedliche Instanzen des System32-Ordners angezeigt?

1119
Vladimir Reshetnikov

Ich verwende Windows 8 Enterprise x64. Ich habe mich mit einem Konto aus der Gruppe Administratoren angemeldet. Wenn ich den Windows Explorer oder eine Eingabeaufforderung öffne, kann ich die Datei sehen cdd.dll:

Windows Explorer


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 

Wenn ich jedoch ein Dialogfeld "Datei öffnen" über einen Chrome-Browser, Visual Studio oder andere Anwendungen (alle 32-Bit-Apps) öffne und zu den C:\Windows\system32Dateien navigiere, gibt es keine solche Datei (der Filter zeigt Alle Dateien an). Wenn ich im Kontextmenü "Datei öffnen" das Kontextmenüelement "Befehlsfenster hier öffnen" mit UMSCHALT + RECHTSKLICK aufrufe dir, geben Sie ein, dass es keine solche Datei gibt:

Dateidialog öffnen


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 

Dieser Effekt ist nicht spezifisch für cdd.dllviele andere Dateien. Mir wurde gesagt, dass dies ein Effekt der Dateisystem-Virtualisierung ist, über den ich sehr wenig weiß.

Könnten Sie mir bitte eine Referenz erklären oder geben, wie dies tatsächlich funktioniert? Gibt es eigentlich mehrere verschiedene Instanzen des System32Ordners ? Wie ist ihre physische Position auf der Festplatte? Ist es möglich, von einem 32-Bit-Prozess auf Dateien in einem anderen System32Ordner zuzugreifen, als den, der standardmäßig für 32-Bit-Prozesse angezeigt wird.

10
Werden sie in x64-Apps angezeigt? Ich habe eine Ahnung, dass Windows 64-Bit-Treiber (cdd.dll ist ein Anzeigetreiber) vor 32-Bit-Apps "versteckt". Nathan C vor 10 Jahren 0
Ja, alle 64-Bit-Apps, die das Durchsuchen des Dateisystems zulassen (z. B. ein Dialogfeld "Datei öffnen"), zeigen dieselben Dateien wie der Windows Explorer. Vladimir Reshetnikov vor 10 Jahren 0
@VladimirReshetnikov Gibt es etwas, das Sie immer noch nicht verstehen, Sie haben Ihre Frage bearbeitet, aber keine weiteren Details angegeben, Sie haben auch keine der Antworten akzeptiert. Brauchen Sie noch etwas klarer? Scott Chamberlain vor 10 Jahren 0
@ ScottChamberlain Ich habe gerade Tags bearbeitet. Ihre Antwort ist sehr gut. Vielen Dank! Vladimir Reshetnikov vor 10 Jahren 0

2 Antworten auf die Frage

11
Scott Chamberlain

Das Problem ist die Ordnerumleitung . Wenn ein 32-Bit-Programm versucht, auf den %windir%\System32Ordner zuzugreifen, wird es unsichtbar in das %windir%\SysWOW64Verzeichnis umgeleitet, dies ist für die 32/64- Bit-Anwendungskompatibilität.

Alle Dateien in System32 sind 64-Bit. Wenn jedoch ein Programm falsch geschrieben wurde, haben sie möglicherweise das System32 in ihr Programm geschrieben, wenn sie nach einer DLL suchen. Um zufällige Programmabstürze durch falsch geschriebene Programme zu verhindern, führt Microsoft diese Weiterleitung durch.

Wenn Sie auf den System32-Ordner und nicht auf den SysWOW64-Ordner zugreifen müssen, navigieren Sie zum "versteckten" Ordner, %windir%\sysnativeder Sie in den "echten" System32Ordner bringt und Sie können den Ordner wie gewohnt durchsuchen.

"% windir%" ist eine Umgebungsvariable. Sie könnten sie genauso wie in Windows eingeben und würden in 99% der Fälle funktionieren, wenn "C: \ Windows" dargestellt wird Scott Chamberlain vor 10 Jahren 0
4
Brian

WOW64 (Windows unter Windows 64bit) verwendet verschiedene Technologien / Techniken zur Unterstützung von 32-Bit-Anwendungen. Darunter befinden sich auch Ordner- und Registrierungs-Weiterleitungen.

Windows Dev Center: Desktop, auf dem 32-Bit-Anwendungen ausgeführt werden

Und genauer gesagt, Informationen zu Anwendungskompatibilitätsprofilen, die diese Magie bewirken. David Hoelzer vor 10 Jahren 0