Auf Windows 64-bit werden einige Dateien und Ordner vom Explorer aber nicht vom Total Commander angezeigt!

Aus TCWikide
Version vom 10. März 2010, 22:55 Uhr von Karlchen (Diskussion | Beiträge) (<BR> am Ende jedes Abschnittes entfernt, ist sinnfrei.)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Wenn man mit einer 64-bit Windows Version arbeitet, dann zeigt der Total Commander für einige Ordner möglicherweise einen anderen Ordnerinhalt an, als der Windows Explorer. Diese Seite beschreibt, warum dies so ist und wie man das Problem lösen kann.

Details zum Problem

Betroffene Windows Versionen

Das skizzierte Problem läßt sich beobachten auf folgenden Windows Versionen:

  • Windows XP 64-bit
  • Windows 2003 64-bit
  • Windows Vista 64-bit
  • Windows Server 2008 64-bit
  • Windows 7 64-bit


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 64-bit Windows. Total Commander hingegen ist auch in der aktuellen Version eine 32-bit Applikation.

Eine kurze Beschreibung, wie 32-bit Applikationen auf 64-bit 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 64-bit Versionen jede Anfrage, die durch ein 32-bit Programm wie z.B. Total Commander gestellt wird, um auf %windir%\system32 zuzugreifen, auf den Ordner %windir%\SysWOW64 um. Das 32-bit 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 32-bit 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 64-bit und Windows 2003 64-bit 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 64-bit, hat Microsoft selbst eine Möglichkeit eingebaut, um die automatische Datei- und Ordnerumleitung zu umgehen. Dieses Hintertürchen steht nur 32-bit Applikationen zur Verfügung, und zwar wenn sie auf

  • Windows Server 2008 64-bit
  • Windows 7 64-bit
  • Windows Vista 64-bit
  • Windows 2003 64-bit mit installiertem Hotfix KB942589
  • Windows XP 64-bit mit installiertem Hotfix KB942589

betrieben werden.

Auf den angegebenen Windows Versionen gibt es einen unsichtbaren Aliasnamen SysNative für den echten system32 Ordner. Nur 32-bit Applikationen können diesen Aliasnamen SysNative benutzen. Wenn eine 32-bit 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 64-bit
  • Windows 7 64-bit
  • Windows Vista 64-bit.

SysNative funktioniert ebenfalls, vorausgesetzt man benutzt Total Commander v7.50a oder höher, unter


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 64-bit DLLs an Stelle der 32-bit 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 64-bit
  • Windows 2003 64-bit
  • Windows Vista 64-bit
  • Windows Server 2008 64-bit
  • Windows 7 64-bit


Durch den Einsatz symbolischer Links

Eine weitere Möglichkeit, die automatische Datei- und Ordnerumleitung zu umgehen, der Microsoft jede 32-bit Applikation unterwirft, die auf einem 64-bit Windows betrieben wird, besteht darin, mittels symbolischer Links auf die echten Ordner zuzugreifen.

Wenn eine 32-bit Applikation über einen symbolischen Link auf den Ordner %windir%\system32 zugreift, so wird in diesem Fall die automatische Ordnerumleitung nicht aktiv, und die 32-bit 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 64-bit
  • Windows 2003 64-bit
  • Windows Vista 64-bit
  • Windows Server 2008 64-bit
  • Windows 7 64-bit


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

Man sollte eine Liste von rund 60 verschiedenen Threads erhalten, ungefähr die Hälfte davon wiederum in deutscher Sprache.
Hinweis:
Man sollte 3 Suchdurchläufe starten, für jeden Suchbegriff einen, wenn man die Vorgabeoption der Forumssuche benutzt Nach allen Wörtern suchen, weil kaum ein Thread alle 3 Suchbegriffe enthält


Benutzte Microsoft Artikel



Zurück zur Bekannte Probleme und Inkompatibilitäten