2010-11-03 40 views
6

Tôi cần biết liệu một .exe là 32 bit hoặc 64 bit, trước khi Tôi khởi chạy nó. IsWow64Process không được sử dụng ở đây vì chưa có quy trình. Có một số API khác sẽ cung cấp cho tôi thông tin này không?Lập trình xác định nếu gốc .exe là 32-bit hoặc 64-bit

+1

bản sao có thể có của [Làm thế nào để tìm thấy nếu dll gốc được biên dịch dưới dạng x64 hoặc x86?] (Http://stackoverflow.com/questions/480696/how-to-find-if-native-dll-is- biên dịch-as-x64-hoặc-x86) –

+0

Thực ra, tôi rút lại lệnh dup - điều này dễ hơn rất nhiều đối với EXE hơn là cho các DLL. –

Trả lời

11

Nếu bạn thực sự chỉ muốn làm điều này cho EXE và không phải là tệp DLL, chỉ cần sử dụng GetBinaryType.

Xác định xem một tập tin là một thực thi (.exe) tập tin, và nếu như vậy, mà hệ thống phụ chạy tập tin thực thi .

+0

Vâng, đây là * chính xác * những gì tôi muốn, và nó dễ dàng hơn nhiều so với đọc tiêu đề PE bản thân mình, đó là những gì các câu trả lời khác được đề xuất. Cảm ơn. –

+1

Bạn may mắn là bạn chỉ cần EXE :-) Những sự phức tạp này xuất hiện cần thiết để làm điều này cho các DLL. Một khoảng cách trong Win32, imo. –

5

Điều này chắc chắn sẽ giúp ích cho bạn post.

Là C# liên quan nhưng nó sẽ cung cấp cho bạn ý tưởng.

+0

+1 để làm điều đó một cách thích hợp :) – Flexo

+0

+1, tôi sẽ đề xuất điều này :) – ruslik

1

Thông tin này có sẵn ở một trong các tiêu đề của PE File file format (định dạng được sử dụng cho exe và dll). Thông tin trong các tiêu đề này có thể được trích xuất theo chương trình (chúng được xác định theo độ lệch) hoặc được truy vấn một cách an toàn hơn thông qua API Win32.

Được rồi, Liviu có con trỏ chính xác cho bạn.

Các vấn đề liên quan