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
:
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\system32
gibt 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:
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 System32
Ordners ? Was ist ihr physischer Speicherort auf der Festplatte? Ist es möglich, von 32-Bit-Prozessdateien in einem anderen System32
Ordner als dem zuzugreifen, der standardmäßig für 32-Bit-Prozesse angezeigt wird?
quelle
Antworten:
Das Problem ist die Ordnerumleitung . Wenn ein 32-Bit-Programm versucht, auf den
%windir%\System32
Ordner zuzugreifen , wird es unsichtbar in das%windir%\SysWOW64
Verzeichnis 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%\sysnative
der Sie zum "echten"System32
Ordner führt, und Sie können den Ordner wie gewohnt durchsuchen.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
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
quelle