Програмно определяне дали собственият .exe е 32-битов или 64-битов

Трябва да знам дали даден .exe е 32-битов или 64-битов, преди да го стартирам. IsWow64Process не е полезен тук, тъй като все още няма процес. Има ли друг API, който ще ми даде тази информация?


person JSBձոգչ    schedule 03.11.2010    source източник
comment
възможен дубликат на Как да намеря дали е роден dll е компилиран като x64 или x86?   -  person Steve Townsend    schedule 03.11.2010
comment
Всъщност изтеглям дублиращото копие - изглежда, че това е много по-лесно за EXE, отколкото за DLL.   -  person Steve Townsend    schedule 03.11.2010


Отговори (3)


Ако наистина искате да направите това само за EXE файлове, а не за DLL файлове, просто използвайте GetBinaryType.

Определя дали файлът е изпълним (.exe) файл и ако е така, коя подсистема изпълнява изпълнимия файл.

person Steve Townsend    schedule 03.11.2010
comment
Да, това е точно това, което искам, и е много по-лесно, отколкото сам да чета заглавката на PE, което предложиха другите отговори. Благодаря. - person JSBձոգչ; 03.11.2010
comment
Имате късмет, че просто се нуждаете от EXE файлове :-) Тези сложни изкривявания изглеждат необходими, за да направите това за DLL файлове. Пропуск в Win32, imo. - person Steve Townsend; 03.11.2010

Тази публикация със сигурност ще ви помогне.

Свързано е с C#, но ще ви даде идеята.

person Liviu Mandras    schedule 03.11.2010

Тази информация е достъпна в една от заглавките на файлов формат PE (форматът, използван за exe и dll файлове). Информацията в тези заглавки може да бъде извлечена програмно (те са на определено отместване) или по-безопасно заявена чрез Win32 API.

Добре, Ливиу намери правилната показалка за теб.

person Johannes Rudolph    schedule 03.11.2010