@EWeiss: Ja schon klar, aber angenommen, nurmal angenommen, ich prüfe den
PE-Header ob 32/64 um dann dein ChangeFSRedirection(32/64) zu bestimmen/benutzen. [...]Oder sobald \system32\ drinn vorkommt ohne
PE prüfung
Auch keine gute Idee. Es sind noch eine ganze Reihe anderer Verzeichnisse von der Redirection betroffen, und die können sich sogar mit jeder neuen Windows-Version ändern. Zudem können 64 bit Executables/DLLs auch auf einem 32 bit Programm rumliegen, da gibt's aber keine Redirection zu deaktivieren. Nicht die Zieldatei ist ausschlaggebend, sondern das
OS, unter dem ein Programm läuft. Auswertung des
PE Headers ist in Ordnung, sofern man das nicht als Indikator verwendet, unter welchem
OS ein Programm läuft.
@EWeiss:
Windows bietet bereits eine Funktion zur Bestimmung der Bittigkeit:
IsWow64Process. Und bzgl. Wow64DisableWow64FsRedirection: Nimm besser LongBool sowohl für Rückgabe als auch Parameter. Wenn du hier im Forum nach meinen Beiträgen suchst, die diesen Funktionsnamen enthalten, findest du eine Implementation von mir (mittlerweile allerdings leicht überarbeitet).
Und immer schön darauf achten, die Redirection nur
kurzzeitig zu deaktivieren. Denn es funktioniert z.B. nicht, eine
DLL aus \Windows\System32 zu laden, während sie deaktiviert ist (weil 32 bit Prozesse nunmal keine 64 bit DLLs laden können, und umgekehrt).
Noch kurz bzgl. des Löschens des bei dir vorhandenen System64: Wenn es wirklich eine Junction ist, kann man die löschen. Ich rate aber dazu, einen Dateimanager (oder die CMD) zu verwenden und nicht den Explorer. Es wird immer wieder behauptet, der Explorer könne nicht sauber mit diesen NTFS-Eigenschaften umgehen und würde bei einem Löschvorgang nicht nur die Junction an sich sondern auch alles entsorgen, worauf die Junction zeigt. Ich hab das irgendwann mal ausprobiert, und konnte das nicht bestätigen. Aber wie sagen die Angelsachsen so schön: Better safe than sorry.
Grüße
Dalai