Warum sehen unterschiedliche Prozesse unterschiedliche Instanzen des System32-Ordners?

10

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 den Chrome-Browser, Visual Studio oder einige andere Anwendungen (alle 32-Bit-Apps) öffne und zu navigiere, C:\Windows\system32gibt es keine solche Datei (der Filter zeigt alle Dateien an). Wenn ich den Kontextmenüpunkt "Befehlsfenster hier öffnen" mit Umschalt + Rechtsklick im Dialogfeld "Datei öffnen" aufrufe und eingebe dir, wird bestätigt, dass keine solche Datei vorhanden ist:

Öffnen Sie den Dateidialog


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 cdd.dll, viele andere Dateien unterscheiden sich ebenfalls. Mir wurde gesagt, dass dies ein Effekt der Dateisystemvirtualisierung ist , über den ich sehr wenig weiß.

Könnten Sie mir bitte erklären oder eine Referenz geben, die erklärt, wie dies tatsächlich funktioniert? Gibt es tatsächlich mehrere verschiedene Instanzen des System32Ordners ? Was ist ihr physischer Speicherort auf der Festplatte? Ist es möglich, von 32-Bit-Prozessdateien in einem anderen System32Ordner als dem zuzugreifen, der standardmäßig für 32-Bit-Prozesse angezeigt wird?

Vladimir Reshetnikov
quelle
Werden sie in x64-Apps angezeigt? Ich habe die Vermutung, dass Windows 64-Bit-Treiber (cdd.dll ist ein Anzeigetreiber) vor 32-Bit-Apps "versteckt".
Nathan C
Ja, alle 64-Bit-Apps, die das Durchsuchen des Dateisystems ermöglichen (z. B. ein Dialogfeld zum Öffnen von Dateien), zeigen dieselben Dateien wie Windows Explorer an.
Vladimir Reshetnikov
@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. Benötigen Sie noch etwas geklärt?
Scott Chamberlain
@ScottChamberlain Ich habe gerade Tags bearbeitet. Ihre Antwort ist sehr gut. Vielen Dank!
Vladimir Reshetnikov

Antworten:

11

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 dient der 32/64- Bit-Anwendungskompatibilität.

Alle Dateien in System32 sind 64-Bit-Dateien. Wenn jedoch ein Programm falsch geschrieben wurde, haben sie das System32 möglicherweise bei der Suche nach einer DLL fest in ihr Programm codiert. Um zu verhindern, dass zufällige Programmabstürze durch falsch geschriebene Programme verursacht werden, leitet Microsoft diese Umleitung durch.

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

Scott Chamberlain
quelle
%windir%ist eine Umgebungsvariable, Sie könnten es einfach so in Windows eingeben und es würde funktionieren, 99% der Zeit, die es darstelltC:\Windows
Scott Chamberlain
4

WOW64 (Windows unter Windows 64 Bit) verwendet verschiedene Technologien / Techniken, um 32-Bit-Anwendungen zu unterstützen. Darunter befinden sich Ordner- und Registrierungsumleitungen.

Windows Dev Center: Desktop mit 32-Bit-Anwendungen

Brian
quelle
Und insbesondere Informationen zu Anwendungskompatibilitätsprofilen, die diese Magie auslösen.
David Hoelzer