Auf Windows 64-bit werden einige Dateien und Ordner vom Explorer aber nicht vom Total Commander angezeigt!
Problem
Der Windows Explorer zeigt eine Reihe von Dateien und Ordnern in seinem Dateipanel an. Der Total Commander hingegen listet gar keine oder wenigstens nicht alle diese Dateien und Ordner auf. Oder der Total Commander und der Explorer zeigen abweichende Dateigrößen für anscheinend die gleichen Dateien an.
Dies trifft zu, obwohl sowohl der Explorer, als auch der Total Commander so eingestellt worden sind, dass sie beide alle Dateien und Ordnern anzeigen, auch wenn diese die Attribute "versteckt" und "System" besitzen.
Betroffene Windows Versionen: 64bit
Das skizzierte Problem läßt sich beobachten auf folgenden Windows Versionen:
- Windows XP 64bit
- Windows 2003 64bit
- Windows Vista 64bit
- Windows Server 2008 64bit
- Windows 7 64bit
Betroffene Dateien und Ordner
Dieses Problem betrifft Dateien und Ordner, die im Ordner %windir%\system32 oder in Unterordnern von %windir%\system32 gespeichert sind. Eine Datei, für die dieses Problem häufig berichtet wird, ist die Datei hosts, genauer %windir%\system32\drivers\etc\hosts.
Hinweis:
%windir% ist eine Variable, die den echten Pfad des Windows Ordners beinhaltet. Meistens wird %windir% daher gleichbedeutend sein mit C:\Windows.
Was verursacht dieses Problem?
Deine Windows Version ist ein 64bit Windows. Total Commander hingegen ist auch in der aktuellen Version eine 32bit Applikation.
Eine kurze Beschreibung, wie 32bit Applikationen auf 64bit Windows Versionen betrieben werden, kann man in den folgenden (englischsprachigen) Microsoft Artikeln nachlesen:
(Da es keine offizielle deutsche Übersetzung gibt, gibt es hier stattdessen eine etwas ausführlichere Interpretation: WoW64 automatische Ordnerumleitung)
Wie die Microsoft Artikel erläutern, leiten Windows 64bit Versionen jede Anfrage, die durch ein 32bit Programm wie z.B. Total Commander gestellt wird, um auf %windir%\system32 zuzugreifen, auf den Ordner %windir%\SysWOW64 um. Das 32bit Programm jedoch wird glauben, es sehe tatsächlich den Ordner %windir%\system32.
Dabei ist es natürlich so, dass %windir%\system32 und %windir%\SYSWOW64 keineswegs dieselben Unterordner und die selben Dateien enthalten.
Nicht vergessen:
Wenn man navigiert nach %windir% => system32, wird damit die Wow64 Ordner- und Dateiumleitung aktiv, und in Wirklichkeit leitet einen diese um nach %windir% => SysWoW64, immer vorausgesetzt man benutzt Total Commander oder eine andere 32bit Applikation.
Ausnahmen von der Umleitungsregel
Eine kleine Zahl von Ordnern unterliegt nicht der Umleitung in den %windir%\SysWOW64 Ordnerbaum:
- %windir%\system32\catroot
- %windir%\system32\catroot2
- %windir%\system32\drivers\etc
- %windir%\system32\logfiles
- %windir%\system32\spool
Unter Windows XP 64bit und Windows 2003 64bit wird auch
- %windir%\system32\driverstore
nicht umgeleitet.
Dies trifft allerdings nur zu, wenn man die genannten Ordner direkt in einem Schritt ansteuert, indem man die kompletten Pfadnamen angibt.
Wenn man hingegen navigiert von %windir% nach system32, dann z.B. nach catroot, dann hat die automatische Ordnerumleitung bereits zugeschlagen, als man versucht hat, system32 anzusteuern. In diesem Moment ist Total Commander bereits nach SysWOW64 umgeleitet worden. Daher kann man von hieraus nicht mehr in den echten catroot Ordner weiternavigieren.
Lösung
Durch Verwendung des unsichtbaren Aliasnamen SYSNATIVE
Ab Vista 64bit, hat Microsoft selbst eine Möglichkeit eingebaut, um die automatische Datei- und Ordnerumleitung zu umgehen. Dieses Hintertürchen steht nur 32bit Applikationen zur Verfügung, und zwar wenn sie auf
- Windows Server 2008 64bit
- Windows 7 64bit
- Windows Vista 64bit
- Windows 2003 64bit mit installiertem Hotfix KB942589
- Windows XP 64bit mit installiertem Hotfix KB942589
betrieben werden.
Auf den angegebenen Windows Versionen gibt es einen unsichtbaren Aliasnamen SysNative für den echten system32 Ordner. Nur 32bit Applikationen können diesen Aliasnamen SysNative benutzen. Wenn eine 32bit Applikation verlangt, auf %windir%\Sysnative zuzugreifen, dann wird sie nicht umgeleitet nach SysWOW64, sondern sie gelangt in den echten %windir%system32 Ordner.
Der empfohlene Weg, um auf den echten Ordner system32 zuzugreifen, ist es, dazu den Aliasnamen SysNative zu benutzen.
Deshalb zeigen Total Commander 7.50 und neuer den unsichtbaren Aliasnamen Sysnative im Ordner %windir% ganz so an, als handle es sich um einen (fast) normalen Ordner. Das macht die Verwendung von SysNative sehr einfach.
Darum navigiert man im Total Commander nach %windir% => Sysnative. Damit gelangt man tatsächlich in den echten Ordner %windir%\system32.
Navigiert man hingegen nach %windir% => system32, löst das die Wow64 Datei- und Ordnerumleitung aus, und man navigiert stattdessen nach %windir% => SysWoW64.
SysNative läßt sich einfach so benutzen, vorausgesetzt man benutzt Total Commander v7.50a oder höher, unter
- Windows Server 2008 64bit
- Windows 7 64bit
- Windows Vista 64bit.
SysNative funktioniert ebenfalls, vorausgesetzt man benutzt Total Commander v7.50a oder höher, unter
- Windows 2003 64bit mit installiertem Hotfix KB942589
- Windows XP 64bit mit installiertem Hotfix KB942589
Durch (vorübergehende) Verwendung von X64DisableRedirection
Ab der Version 7.0 kennt der Total Commander einen Konfigurationsparameter X64DisableRedirection. Der Vorgabewert dieses Parameters ist 0, d.h. die Windows Datei- und Ordnerumleitung ist nicht deaktviert (=eingeschaltet). Man kann jedoch den Parameter X64DisableRedirection=1 im Abschnitt [Configuration] hinzufügen und damit die Windows Datei- und Ordnerumleitung für den Total Commander abschalten.
Warnhinweis:
Wenn man das dauerhaft tut, dann wird dies unweigerlich zu Problemen mit Plugins führen, die nun fälschlicherweise versuchen, DLLs aus dem echten Ordner system32 zu laden und somit 64bit DLLs an Stelle der 32bit DLLs, welche in SysWOW64 liegen.
Drum, wenn man die Windows Datei- und Ordnerumleitung schon abschalten will oder muß, dann sollte man dies lieber nur vorübergehend tun, indem man dazu den Total Commander internen Befehl cm_SwitchX64Redirection verwendet. Diesen internen Total Commander Befehl gibt es ab der Version 7.50.
Deaktivieren/Reaktivieren der X64 Datei- und Ordnerumleitung funktioniert mit Total Commander v7.0 oder neuer auf
- Windows XP 64bit
- Windows 2003 64bit
- Windows Vista 64bit
- Windows Server 2008 64bit
- Windows 7 64bit
Durch den Einsatz symbolischer Links
Eine weitere Möglichkeit, die automatische Datei- und Ordnerumleitung zu umgehen, der Microsoft jede 32bit Applikation unterwirft, die auf einem 64bit Windows betrieben wird, besteht darin, mittels symbolischer Links auf die echten Ordner zuzugreifen.
Wenn eine 32bit Applikation über einen symbolischen Link auf den Ordner %windir%\system32 zugreift, so wird in diesem Fall die automatische Ordnerumleitung nicht aktiv, und die 32bit Applikation wird nicht nach %windir%\SysWOW64 umgeleitet.
Darum können Benutzer z.B. Sysinternals junction verwenden und einen symbolischen Link im Ordner %windir% namens sl_system32 anlegen, der auf den echten Ordner system32 zeigt.
Damit kann man ab sofort im Total Commander nach %windir% => sl_system32 navigieren. Damit gelangt man in den echten Ordner %windir%\system32 folder.
Navigiert man hingegen nach %windir% => system32, löst das die Wow64 Datie- und Ordnerumleitung aus, und man landet stattdessen in %windir% => SysWoW64.
Warnung:
Auf Windows Versionen vor Vista löscht der Explorer den Inhalt des Zielordnerns, wenn man lediglich versucht, den symbolischen Link wieder zu entfernen. Alte Explorer können symbolische Links nicht vom Zielordner unterscheiden. Total Commander hingegen kann symbolische Links sehr wohl von dem Ordner unterscheiden, auf den der Link zielt.
Das beschriebene Problem mittels symbolischer Links zu umgehen, funktioniert auf
- Windows XP 64bit
- Windows 2003 64bit
- Windows Vista 64bit
- Windows Server 2008 64bit
- Windows 7 64bit
Weitere Informationsquellen
Total Commander Forum
Dieses Problem wurde vielfach berichtet und ausgiebig diskutiert im offiziellen Total Commander Forum. Benutze die Forumssuche und suche nach den Begriffen
- X64DisableRedirection und
- SysNative und
- system32\drivers\etc
Du solltest eine Liste von rund 60 verschiedenen Threads erhalten, ungefähr die Hälfte davon wiederum in deutscher Sprache.
Benutzte Microsoft Artikel
- Running 32-bit Applications (engl.)
- File System Redirector (engl.)
- Eine 32-Bit-Anwendung kann nicht im Ordner system32 auf einem Computer zuzugreifen, auf dem eine 64-Bit-Version von Windows Server 2003 oder Windows XP ausgeführt wird
- Übersicht über Kompatibilitätsfragen für 32-Bit-Programme unter 64-Bit-Versionen von Windows Server 2003 und Windows XP
-- 27. Feb. 2010 16:47 (UTC)
Zurück zur Bekannte Probleme und Inkompatibilitäten