检查.exe以了解它构建的Visual C ++版本

时间:2012-05-19 22:58:18

标签: winapi visual-c++

有没有办法检查使用哪个版本的Visual C ++来构建给定的.exe?

我知道如果.exe使用动态链接与CRT很容易:我可以使用Dependency Walker并读取MSVCRxx.DLL版本,例如:对MSVCR90.DLL的依赖意味着.exe是使用Visual C ++ 2008构建的,即VC9;但是与CRT静态链接的情况呢?

2 个答案:

答案 0 :(得分:0)

可能检查Depends.exe中的链接器版本,几乎与VisualC ++版本相同。

在Dependency Walker的下方视图中,选择 Linker Ver 列。

答案 1 :(得分:0)

我在Matt Pietrek的MSDN上发现了这篇有趣的文章:

Inside Windows: An In-Depth Look into the Win32 Portable Executable File Format

感兴趣的字段为IMAGE_OPTIONAL_HEADER32/64::MajorLinkerVersionMinorLinkerVersion。它们几乎与Visual C ++版本相同(例如“10”和VC10的“0”)。

(我认为这些是Dependency Walker在其用户界面中用于 Linker Ver 列的字段。)