![为什么 WinSCP 对 CLI 版本使用 .com 二进制文件,而对 GUI 版本使用 .exe 二进制文件?](https://linux22.com/image/1605556/%E4%B8%BA%E4%BB%80%E4%B9%88%20WinSCP%20%E5%AF%B9%20CLI%20%E7%89%88%E6%9C%AC%E4%BD%BF%E7%94%A8%20.com%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%EF%BC%8C%E8%80%8C%E5%AF%B9%20GUI%20%E7%89%88%E6%9C%AC%E4%BD%BF%E7%94%A8%20.exe%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我以为 .com 是可执行文件的一种古老格式,是早期 MS-DOS 时代遗留下来的?为什么他们现在在 WinSCP 中使用它?为什么只用于 CLI 版本?
我尝试在他们的聊天室询问这个问题,但几天都没有收到任何回复。一如既往。
答案1
这两个 WinSCP 文件实际上都是标准 Windows PE 格式的常规 Win32 可执行文件。
(Windows 实际上并不要求格式与扩展名匹配 - 只要 shell 检测到它是A已知的“可执行”扩展,它只会告诉操作系统执行它,而操作系统内核本身将负责处理格式细节。)
但是,当 Windows Cmd.exe 在 %PATH% 中搜索匹配的可执行文件时,它会按照 %PATHEXT% 环境变量指定的顺序进行搜索 - 该顺序列出了.COM
前 .EXE
。
因此,如果您只是输入winscp
Cmd,那么命令 shell 将优先运行winscp.com
(CLI 工具)而不是winscp.exe
(图形化)。