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

本文关键字:区别 之间 文件 pe exe | 更新日期: 2023-09-27 18:22:11

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

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

而不是exe包含什么?。PE与EXE有何不同?

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

可移植可执行文件PE)是包含操作系统正确加载可执行代码(.exe.dll…)所需所有信息的文件

这可能包括用于链接、资源管理、TLS数据等的动态库引用。

可执行文件.exe)是表示计算机程序的主要执行点的文件,也就是说,用C#术语来说,包含main函数或入口点的文件。

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

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

据我所知,生成的PE文件中的信息包括:

  • 页眉
  • Metadadata
  • CLR数据段

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

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