我需要检测给定的 .dll 或 .exe 文件是 32 位还是 64 位
目前我只有一个解决方案:从指定文件中读取 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 格式中的某些特定字段或某些特殊的系统函数)?
最佳答案
GetBinaryType(...)为基于 Windows 的 32 位应用程序返回 SCS_32BIT_BINARY
和 SCS_64BIT_BINARY
用于基于 Windows 的 64 位应用程序。
关于c++ - 如何检测给定的 PE 文件(exe 或 dll)是 64 位还是 32 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1153090/