.exe 和 .pe 文件之间的区别?

Difference between .exe and .pe files?

编译时visual studio c# 应用程序将生成 PE 和 EXE 文件。 那么PE文件和EXE文件的主要区别是什么? 据我所知,PE 文件包含

PE/COFF Headers,
CLR Headers,
CLR Data,
Meta Data,
IL code,
.data,.text...

比 exe 包含什么?.PE 与 EXE 有何不同?

可移植可执行文件 (PE) 是包含操作系统正确加载可执行代码 (.exe, .dll, ...)

这可能包括 linking, resource management, TLS 数据的动态库引用等。

Executables (.exe),但是,是表示计算机程序上主要执行点的文件,即,用 C# 术语来说,包含 Main 函数或入口点的文件。

因此,PE代表可移植的可执行文件,它是 格式 用于 Windows 32 位和 64 位环境中的可执行二进制文件的文件。

据我了解,生成的 PE 文件中的信息将包含:

  • Headers
  • 元数据
  • CLR 数据段

但是,IL 代码将在 EXE 文件中,因为它应该是独立于平台的,并且当您 运行 应用程序(Just-in time-compiler). PE部分还负责 CLR 的初始化。

请记住,PE 部分可以 可执行文件中,这在大多数应用程序中更有意义。

.exe文件是PE文件的一个子集,而PE文件包括.exe、.dll和.ocx文件。