0

注意:(1) 我在 Windows 7 64 位中工作,(2) 我已经看到了如何测试 Windows DLL 文件以确定它是 32 位还是 64 位?.

我正在尝试编写一个检查 DLL 位数的 C 程序。使用 Windows API 和调试帮助库,我可以访问 NT Header 的 FileHeader.Machine。

我的程序似乎适用于 32 位 DLL,但错误地将 C:\Windows\System32\KERNEL32.DLL 识别为 32 位(为什么在 64 位 Windows 上 64 位 DLL 转到 System32 和 32 位 DLL 到 SysWoW64?)。

我查看了 Dependency Walker,但在 32 位和 64 位版本的depends.exe 之间得到不一致的结果——C:\Windows\System32\KERNEL32.DLL 被 32 位版本的depends.exe 识别为 32 位 (CPU: x86),但被 64 位版本识别为 64 位 (CPU: x64)。

FileHeader.Machine 不是要走的路吗?64 位版本的depends.exe 如何将DLL 识别为64 位?

4

0 回答 0