“.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之前,因为可以见上图:
- What would be the reason for WinSCP using a ".com" instead of ".exe"?
- Executables in Visual Studio: devenv.com/devenv.exe
Windows 10 wsl (not wsl-2) even supports running Linux ELF executables directly and they of course doesn't have any extension by default. Since wsl-2 the file is run inside the VM instead of directly under Windows kernel like in wsl
根据 Windows 版本,它可能支持更多的可执行格式。完整列表为
- 旧 *.com 格式的原始二进制指令
- NE *.exe format
- PE *.exe format
- MZ *.exe format
- ELF format
除了原始 *.COM 文件外,它们也不依赖于扩展名
我发现我计算机上的每个进程 运行 在任务管理器中都有 .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之前,因为可以见上图:
- What would be the reason for WinSCP using a ".com" instead of ".exe"?
- Executables in Visual Studio: devenv.com/devenv.exe
Windows 10 wsl (not wsl-2) even supports running Linux ELF executables directly and they of course doesn't have any extension by default. Since wsl-2 the file is run inside the VM instead of directly under Windows kernel like in wsl
根据 Windows 版本,它可能支持更多的可执行格式。完整列表为
- 旧 *.com 格式的原始二进制指令
- NE *.exe format
- PE *.exe format
- MZ *.exe format
- ELF format
除了原始 *.COM 文件外,它们也不依赖于扩展名