By web master on Wednesday, 17 October 2012
Category: Microsoft

Windows und die x64 Redirection

Jeder der einmal mit Softwareverteilung und 64-Bit Betriebssystemen in Kontakt gekommen ist, kennt sie: die 64-Bit Redirection.Doch was genau ist das und was ist bei der Softwareverteilung zu beachten?

Auf einem 64-Bit Windows Betriebssystem können sowohl 32-Bit als auch 64-Bit Applikationen installiert werden. Für jede Architektur gibt es unter Windows einen eigenen Bereich der für die Redirection relevant ist. Auf Fileebene ist es das Verzeichnis C:\Windows\System32\..., in der Registry ist es der Zweig HKLM\Software\... Hier befinden sich alle 64-Bit relevanten Informationen.

Der 32-Bit Bereich befindet sich unter C:\Windows\SysWOW64 bzw. unter HKLM\SOFTWARE\Wow6432Node

In beiden Verzeichnissen befindet sich z.B. in der Root die Datei cmd.exe. Hier kann man sehen, dass es für beide Architekturen eine eigene Version gibt. Alle anderen Verzeichnisse bzw. Regisitrykeys sind für die Redirection irrelevant. Auch das oft vermutete C:\Program Files bzw. C:\Program Files (x86)! Dateien liegen hier entweder in dem einen oder in dem anderen Verzeichnis, niemals aber in beiden, wie es unter C:\Windows\System32 durchaus der Fall sein kann.

DSM bietet die Möglichkeit zu steuern, ob eine Aktion im 32-Bit oder 64-Bit Bereich ausgeführt werden soll. Da DSM jedoch eine reine 32-Bit Applikation ist, kennt diese erst mal keine 64-Bit Bereiche. Das bedeutet, dass wenn z.B. eine Datei nach C:\Windows\System32 kopiert werden soll, landet diese auf einem 64-Bit System immer in C:\Windows\SysWOW64. Hier schlägt die Redirection zu.

Somit ist erst mal sichergestellt, dass sich 32-Bit Applikationen auch immer im 32-Bit Bereich bewegen. Andernfalls könnte es passieren, dass eine 32-Bit Applikationen den bereits existierenden 64-Bit Teil überschreibt oder löscht.

Um die Datei aber tatsächlich nach C:\Windows\System32 zu bekommen, muss für diese Aktion die Redirection deaktiviert werden. Für den entsprechenden Befehl steht folgende Option zur Verfügung:

Jetzt weiß auch die 32-Bit Applikation DSM, dass folgende Aktion in einem 64-Bit Bereich durchgeführt werden soll und deaktiviert genau für diese Aktion die Redirection. Wie wird das relaisiert? Ganz einfach: als Pfad wird jetzt C:\Windows\Sysnative verwendet.

Analog zum Filebereich bezieht sich in der Registry das Abschalten der Redirection auch auf alle Aktionen, die unter HKLM\Software\... durchgeführt werden.

Microsoft wäre jedoch nicht Microsoft, wenn es hierbei keine Ausnahmen geben würde. Aktionen in folgenden Verzeichnissen werden nicht redirected, da diese auch 64-Bit Systemen ausschließlich im 64-Bit Bereich vorhanden sind.

C:\Windows\System32\system32\catroot
C:\Windows\System32\system32\catroot2
C:\Windows\System32\system32\driverstore
C:\Windows\System32\system32\drivers\etc
C:\Windows\System32\system32\logfiles
C:\Windows\System32\system32\spool

Jetzt stellt sich aber die Frage, warum für den 64-Bit Bereich nicht C:\Windows\System64 und C:\Windows\System32 für den 32-Bit Bereich verwendet wird? Das bleibt das große Geheimnis von Microsoft...

Soll eine Datei auf einem 64-Bit Betriebssystem z.B. nach C:\Program Files kopiert werden, muss die Redirection nicht deaktiviert werden, da diese hier nicht greift.
Hier ist die Verwendung der entsprechend richtigen Variable %ProgramFilesDir64% erforderlich:

Die Variable lässt sich zusätzlich einblenden, sollte Sie nicht schon zur Verfügung stehen. Dies erfolgt in der Infrastruktur-Ansicht im Menü "Extras > Alle Variablen anzeigen…".

Leave Comments