Проверяя исполняемые файлы Win32, я обнаружил, что они содержат строку. This program cannot be run in DOS mode , и это именно то, что печатается, когда эти исполняемые файлы запускаются из эмуляторов DOS, таких как DOSBox.

Это приводит меня к выводу, что исполняемый файл имеет два пути: один используется DOS (что приводит к отображению вышеуказанного сообщения), а другой - Windows, что приводит к запуску основной программы.

Как на самом деле достигается эта "двойная тропа"?

1 ответ1

2

Краткий ответ: каждый EXE-файл начинается с исполняемого файла DOS.

Длинный ответ:

Заголовок MS-DOS

Каждый PE-файл начинается с небольшого исполняемого файла MS-DOS®. Потребность в этом исполняемом заглушке возникла в первые дни Windows, еще до того, как ее запустило значительное количество потребителей. При выполнении на компьютере без Windows программа могла бы по крайней мере распечатать сообщение о том, что Windows требуется для запуска исполняемого файла.

Ссылка: выпуск журнала MSDN Magazine Inside Windows за февраль 2002 года. Углубленный взгляд на формат исполняемых файлов Win32 Portable

Загрузчик программ для Windows просто игнорирует эту заглушку. DOS загружается и запускается так же, как и любой другой исполняемый файл DOS.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .