DisableWow64FsRedirection

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

DisableWow64FsRedirection

Beitrag von ts-soft »

Kleines Beispiel, wie man unter Vista64+ die FileSystemRedirection umgeht.
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 
Vielleicht kanns ja einer brauchen :wink:

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Beitrag von Rings »

thx
Rings hat geschrieben:ziert sich nich beim zitieren
Antworten