каждый исполняемый файл в Windows имеет расширение .exe
Это не правильно. В DOS было 2 расширения исполняемых файлов: *.COM
и *.EXE
. Windows унаследовала их, поэтому она также поддерживает * .com и * .exe . Обратите внимание, что * .exe - это просто «контейнер», содержащий различные исполняемые форматы.
Если вы запустите команду без расширения, Windows добавит расширения в %pathext%
переменную среды и будет искать, пока не найдет первый файл с таким именем. Значение по умолчанию для переменной выглядит следующим образом
>echo %pathext%
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
Как вы можете видеть, существуют другие типы исполняемых файлов, которые будет запускать Windows (без расширения), но большинство из них являются сценариями, а не двоичными исполняемыми файлами .
Тем не менее Windows фактически не использует расширение файла для определения формата файла. Любые файлы, начинающиеся сMZ
(который является подписью для формата MZ), будут рассматриваться как исполняемый файл .
Windows 10 также имеет возможность запускать исполняемые файлы Linux ELF с введением windows-subsystem-for-linux
Установочные файлы в Windows также часто предоставляются в файлах * .msi, формат которых читается установщиком Windows , хотя, строго говоря, это не исполняемый файл.