编译器将有关我和我的系统的哪些信息添加到可执行文件中?

问题描述 投票:0回答:3

我目前使用的是 Microsoft Visual Studio 2010。

如果我们说我们给 10 个不同的人一份 MSVC 10 的副本和一个简短的 C++ Hello, World 清单。他们都使用完全相同的设置创建一个新项目,添加一个包含 Hello, World 程序的新 cpp 文件并编译它。

  • 他们都得到完全相同的二进制文件吗?
  • 如果不是,具体区别是什么?
  • MSVC 将有关我的系统的哪些信息添加到我的可执行文件中?

偏执狂!

visual-c++
3个回答
2
投票

如果您每个人都从头开始创建一个项目,那么您至少会获得不同的 GUID(假设它是需要 GUID 的项目类型)。 GUID 是在您创建项目时设置的,因此如果其中一人创建了该项目然后共享该项目,则二进制文件不会有任何差异。 GUID AFAIK 中没有可识别信息。


1
投票

即使这个问题已经一年多了,我还是忍不住回答。

除了已经提到的内容(源路径和 GUID)之外,大多数可移植可执行文件中还存在一种称为丰富标头的结构。

更详细的信息可以在以下链接找到:

http://ntcore.com/files/richsign.htm

http://web17.webbpro.de/index.php?page=microsofts-rich-header


0
投票

据我所知,你会得到完全相同的二进制文件......

© www.soinside.com 2019 - 2024. All rights reserved.