2009-07-20 45 views
6

我需要檢測一個給定的.dll或.exe文件是否是32位或64位如何檢測一個給定的PE文件(EXE或DLL)是64位或32位

目前,我有隻有一個解決方案:從指定的文件中讀取PE Header並從那裏取出「機器」字段。

(規格:Microsoft Portable Executable and Common Object File Format Specification(.docx文件)在部分 「3.3 COFF文件頭(對象和圖像)」)

該字段可能需要最多約20的值。他們三人是:

IMAGE_FILE_MACHINE_I386 (== 32bit) 

IMAGE_FILE_MACHINE_IA64 (== 64bit) 

IMAGE_FILE_MACHINE_AMD64 (== 64bit) 

我的問題:

1)是「機」,以位元映射正確的還是我錯過了什麼?還有其他警告嗎?

2)是否有更簡單的方法來檢測32/64位(可能某些特定領域的PE格式,我沒有注意到或某些特殊的系統功能)?

+0

dup:http://stackoverflow.com/questions/971689/win32-api-to-tell-whether-a-given-binary-exe-or-dll-is-x86-x64-or-ia64/971715 #971715 – 2009-07-20 11:47:59

+0

另一個問題是關於架構的問題,這個問題是關於字大小的問題。 – Draemon 2009-07-20 11:57:42

回答

15

GetBinaryType(...)返回SCS_32BIT_BINARY對於32位基於Windows的應用程序 和SCS_64BIT_BINARY對於64位基於Windows的應用程序。

相關問題