Forum: Win32/Win64 API (native code)
by Dalai,
2. Dez 2020
Ah, jetzt verstehe ich den Zusammenhang. Ja, das ist nachvollziehbar. Vielleicht könnte man mit den Funktionen MapViewOfFile und ImageNtHeader etwas machen, um die Datenstruktur IMAGE_NT_HEADERS füllen zu lassen. Halte ich für besser, als manuell in der EXE rumzusuchen.
Übrigens gibt's MapAndLoad im Win2k auch schon.
Grüße
Dalai
Forum: Win32/Win64 API (native code)
by Dalai,
1. Dez 2020
Ja eben. Deswegen sehe ich nicht, was GetShortPathName damit zu tun hat.
PS: Die durch MapAndLoad gefüllte Datenstruktur LOADED_IMAGE lässt noch mehr zu, als nur die Plattform auszulesen.
Grüße
Dalai
Forum: Win32/Win64 API (native code)
by Dalai,
1. Dez 2020
Deswegen sagte ich ja
In welcher Verbindung steht das mit der Frage, welche Architektur ein Executable hat?
Grüße
Dalai
Forum: Win32/Win64 API (native code)
by Dalai,
1. Dez 2020
Also bei mir funktioniert folgende Funktion seit vielen Jahren einwandfrei, auch unter Win64 und für 64-bit Executables: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);...