Einzelnen Beitrag anzeigen

Benutzerbild von Rakshasa
Rakshasa

Registriert seit: 1. Nov 2003
182 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Datei ausführen unter Windows 64-Bit

  Alt 20. Feb 2007, 01:00
Zitat von himitsu:
zwar kein alter C-ler, aber dennoch ein grober Versuch?
........
Die (aufgehobene) Umleitung sollte doch wohl auch auf ShellExecute eine Auswirkung haben.
[add] ungetestet!
Hallo,

besten Dank Himitsu, es hat super geklappt!!!
(Bis auf eine kleine Änderung: Du hast
Wow64RevertWow64FsRedirection(Wow64FsEnableRedirection); geschrieben; ich hab das zu einem
Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection); geändert)
Ich habe das Ganze in eine kleine Function gepackt, diese überprüft mittels IsWin64, ob ein 64-Bit-Windows vorliegt oder nicht und führt das dementsprechend dann aus. Habe leider keine Möglichkeit, das auf Win32 zu testen; vielleicht kann das ja mal jemand machen und hier ein kleines Feedback posten?!
Wenn jemand was Schöneres für isWin64() hat, möge er es ebenfalls posten...

Delphi-Quellcode:

uses ShellApi, Registry, Windows;

Function Wow64DisableWow64FsRedirection(Var Wow64FsEnableRedirection: LongBool): LongBool; StdCall;
 External 'Kernel32.dllName 'Wow64DisableWow64FsRedirection';
Function Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection: LongBool): LongBool; StdCall;
 External 'Kernel32.dllName 'Wow64EnableWow64FsRedirection';
Var Wow64FsEnableRedirection: LongBool;

....

Function FileExec(const sDatei: String): Integer;
 Function IsWin64: Boolean;
 begin
  With TRegistry.Create do begin
   RootKey := HKEY_LOCAL_MACHINE;
   Result := KeyExists('\SOFTWARE\Wow6432Node');
   Free;
  end;
 end;
begin

if isWin64 then begin

 If Wow64DisableWow64FsRedirection(Wow64FsEnableRedirection) Then Begin
  Result := ShellExecute(0, nil, PChar(sDatei), nil, nil, 0);
  Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection);
 End else
 Result := ShellExecute(0, nil, PChar(sdatei), nil, nil, 0);

end else
 Result := ShellExecute(0, nil, PChar(sdatei), nil, nil, 0);

end;
  Mit Zitat antworten Zitat