Программно определить, является ли собственный .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, имо. - 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