Der Code ist lauffähig, bzw. macht nur Sinn in 32-Bit Anwendungen
aber Unterschiede ergeben sich nur unter Vista64 oder höherem x64
Windows.
Um die Unterschiede zu sehen muß man schon genauer schauen, z.B. das
"etc" Verzeichnis existiert nur auf der rechten (64-Bit Ordner) Seite.
Die DLL wird absichtlich Dynamisch geladen, damit der Code auf x86
Plattformen nicht zu fehlern führt.
Code: Alles auswählen
; Author: Thomas Schulz (ts-soft)
; Date: Februar 07, 2009
; Target OS: Vista x64
; Target Compiler: PureBasic 4.0 and later, x86
EnableExplicit
Procedure DisableWow64FsRedirection(Flag)
If OSVersion() >= #PB_OS_Windows_Vista
Protected DLL = OpenLibrary(#PB_Any, "kernel32.dll")
Protected IsWow64, Result
If DLL
If CallFunction(DLL, "IsWow64Process", GetCurrentProcess_(), @IsWow64)
If IsWow64
Result = CallFunction(DLL, "Wow64EnableWow64FsRedirection", Flag ! 1)
EndIf
EndIf
CloseLibrary(DLL)
EndIf
EndIf
ProcedureReturn Result
EndProcedure
Define SysDir.s{#MAX_PATH}
GetSystemDirectory_(@SysDir, #MAX_PATH)
SysDir + "\Drivers\"
If OpenWindow(0, 0, 0, 600, 300, "DisableWow64FsRedirection", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ExplorerTreeGadget(0, 10, 10, 280, 280, SysDir)
DisableWow64FsRedirection(#True)
ExplorerTreeGadget(1, 310, 10, 280, 280, SysDir)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

Gruß
Thomas