Also bei mir funktioniert folgende Funktion seit vielen Jahren einwandfrei, auch unter Win64 und für 64-bit Executables:
Delphi-Quellcode:
function GetExecutableArchitecture(const AFileName: string): Word;
var
LI: TLoadedImage;
begin
if NOT MapAndLoad(PAnsiChar(AnsiString(AFileName)), nil, @LI, False, True) then
RaiseLastOsError;
Result := LI.FileHeader.FileHeader.Machine;
UnMapAndLoad(@LI);
end;
Ich gebe zu, dass es auch etwas problematisch sein dürfte mit
Unicode-Zeichen im Pfad, aber bislang hab ich keine andere Möglichkeit gefunden (aber in den vergangenen paar Jahren auch nicht mehr danach gesucht).
Grüße
Dalai