Einzelnen Beitrag anzeigen

Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#12

AW: Windows 7 64Bit Redirection

  Alt 12. Nov 2010, 10:52
Also dieser Code startet bei mir osk 64bit. Ohne Wow64DisableWow64FsRedirection wollte osk garnicht erst starten. Die 32Bit funkz wohl nicht unter 64bit (oder will nicht).

Delphi-Quellcode:
uses
  JwaWindows,
  SysUtils;

function GetNativeWindowsDirectory : String;
var
  P : array[0..MAX_PATH] of Char;
begin
  SHGetFolderPath(0, CSIDL_SYSTEM, 0, SHGFP_TYPE_DEFAULT, @P);

  result := P;
end;

var
  oldValue : Pointer;
  Path : String;
begin
  Path := GetNativeWindowsDirectory + '\osk.exe';

  if not Wow64DisableWow64FsRedirection(oldValue) then
    RaiseLastOSError;

  ShellExecuteW(0, 'open', PChar(Path), '', '', SW_SHOWNORMAL);

  Wow64RevertWow64FsRedirection(oldValue);
end.
ShowMessage funktioniert nur dann, wenn es mindestens einmal vor Wow64DisableWow64FsRedirection aufgerufen wurde. Sonst sind nicht alle DLLs geladen und es wird versucht eine 64bit DLL in einen 32bit Prozess zu laden. Zumindest ich bekomme eine generische Exception C0FB007E, was wohl vom Delphi delay loader Mechanismus stammt. $7E = 126d ist übrigens der Win32 Code für Modul nicht gefunden.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat