“.exe”是WindowsOS中唯一的可执行程序扩展名吗?

Is ".exe" the only extension of executable program in Windows OS?

我发现我计算机上的每个进程 运行 在任务管理器中都有 .exe 扩展名。

有人说批处理文件(.bat)和字节码(可能是.class)也是可执行程序,但我认为它们只是其他可执行程序(.bat)的文件运行 - cmd.exe, .class - JVM, .cpl - rundll32.exe) 根据我在任务管理器上看到的

“.exe”是WindowsOS中可执行程序的唯一扩展名吗?

如果您谈论的是执行命令,那么 %PATHEXT% 环境变量中的所有扩展名都可以是 运行 而无需指定扩展名。例如 *.bat、*.vbs... 都是 “可执行文件”

> echo %pathext%
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

如果它是关于二进制可执行文件的,那么 Windows 不关心可执行文件的扩展名。它只是检查格式,如果它是受支持的二进制格式,那么它将是 运行。现代 Windows 使用以 MZ 幻数开头的 PE 格式,因此如果您创建一个 *.TXT 文件,开头为 MZ 并在 cmd 中创建 运行 然后它'实际上是 treated as an executable file。事实上,System32 文件夹中的许多文件,如 *.SCR、*.CPL... 也是 PE 文件,当我们双击它们时仍然是 运行。甚至现代 Windows 应用程序中的 *.COM 文件也是 PE 文件。 *.COM扩展只是为了区别同一个应用的另一个*.EXE,但在运行ning中优先,因为在%PATHEXT%中*.COM默认放在*.EXE之前,因为可以见上图:

Windows 10 (not ) even supports running Linux ELF executables directly and they of course doesn't have any extension by default. Since the file is run inside the VM instead of directly under Windows kernel like in

根据 Windows 版本,它可能支持更多的可执行格式。完整列表为

除了原始 *.COM 文件外,它们也不依赖于扩展名