WinSCP 使用“ .com”而不是“ .exe”的原因是什么?

WinSCP 使用“ .com”而不是“ .exe”的原因是什么?

winscp.com。那不是一个域,而是一个 Windows 上的可执行文件。

为什么它使用(我认为)古老的 MS-DOS 时代的.com可执行文件而不是.exe像过去 30 多年来的其他程序一样?

答案1

尽管有扩展,但它实际上是PE文件就像典型的 EXE 文件而不是 COM 文件一样。PATHEXT环境变量中列出的任何扩展名都将被视为可执行文件,然后在打开文件时,Windows 或该扩展名的注册应用程序将检查签名以确定其可执行文件的类型(PE、NE、COM...)并相应地执行。尝试将任何 *.exe 文件重命名为 *.com 甚至 *.cmd、*.bat,它仍将正常运行

如果你注意到还有程序运行库在同一文件夹中。原因是因为WinSCP.exe是 GUI,并且WinSCP.com用于从命令行运行

WinSCP 有两个可执行文件:

  • winscp.exe:主可执行文件,支持 GUI 和控制台操作;
  • winscp.com:控制台界面工具,仅支持控制台操作,允许输入/输出重定向。

可执行文件 winscp.exe 和 winscp.com

Windows 应用不允许同时作为 GUI 和控制台应用程序因此必须使用一些技巧。默认情况下,COM 列在 EXE 之前,PATHEXT因此当您运行没有扩展名的命令时,将首先考虑 *.com 文件。这类似于devenv.com/devenv.exe在 Visual Studio 中,或者在 Libre Office 中,使用 soffice.com/soffice.exe。请参阅一个可执行文件可以同时是控制台和 GUI 应用程序吗?

相关内容