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:控制台界面工具,仅支持控制台操作,允许输入/输出重定向。
Windows 应用不允许同时作为 GUI 和控制台应用程序因此必须使用一些技巧。默认情况下,COM 列在 EXE 之前,PATHEXT
因此当您运行没有扩展名的命令时,将首先考虑 *.com 文件。这类似于devenv.com/devenv.exe在 Visual Studio 中,或者在 Libre Office 中,使用 soffice.com/soffice.exe。请参阅一个可执行文件可以同时是控制台和 GUI 应用程序吗?