Всегда ли EXE можно заменить на COM?

53

предварительный просмотр

Наше антивирусное программное обеспечение не позволило мне скопировать EXE-файл в папку автозагрузки Windows 7 (например, calc.exe), так как это EXE-файл.

Поэтому я переименовал его в COM-файл, а затем скопировал его, и это позволило (очень профессионально).

И конечно - calc.comработает.

Что заставило меня спросить (только для любопытства):

Вопрос

Когда программа EXE не будет работать при переименовании в COM? Почти все исполняемые файлы, которые я проверял, работали.

Я хотел бы знать, почему и почему нет.

Ройи Намир
источник
42
Не копируйте файлы в папку «Автозагрузка» - вместо этого создайте ярлыки.
Гроностай
4
Да, это возможно, но, как я уже сказал, внутренности интересовали меня. Не тупой AV. :-)
Рой Намир
11
Вы также можете переименовать его в .scr (заставку), и он будет работать.
pjc50
2
Это не глупый AV (не считая, что файл с расширением com все еще можно интерпретировать как PE-файл). Вы не должны размещать исполняемые файлы в местах, куда их легко записать - в идеале вы хотите, чтобы администратору (с маркером администратора) разрешалось писать в том же каталоге, где у вас есть исполняемые файлы. Используйте ярлыки :)
Luaan
1
@Luaan Я не понимаю, как исключить EXE и разрешить ярлыки в Startup как-то более безопасно, чем разрешать как EXE, так и ярлыки. Кажется, сравнимо со мной.
jrw32982 поддерживает Монику

Ответы:

10

Это связано с внутренним форматом файла. Первоначально файлы .com были простыми образами памяти, а файлы .exe имели множество заголовков, связанных с ними. В результате вы не могли их переименовать. Со временем, когда им пришлось сделать вещи обратно совместимыми, Microsoft изменила их так, чтобы ОС смотрела на сам файл, чтобы определить, какой это тип файла вместо расширения. В результате при запуске переименованного файла Windows полностью игнорирует расширение. Смотрите ссылки ниже для более подробного объяснения.

Подобный вопрос

Объяснение блога Microsoft

Математик
источник
1
Gee. Кто еще думал об этом? ... UNIX / Linux.
Джо
1
@Joe Любая система, которая выросла органически, да. COM-файлы существовали задолго до переносимых исполняемых файлов и в течение достаточно долгого времени находились в идеальном состоянии.
Luaan
@Luaan Конечно, ты прав. Я создавал / использовал com-файлы на CP / M (где 64 КБ оперативной памяти никогда не было проблемой для меня). Просто интересно, когда одна ОС копирует что-то из другой, с чего все началось правильно, особенно когда они так долго осуждали это.
Джо
@Joe Будучи фанатом Linux, мне нравится, как он использует свойства вместо расширений.
Математик
Случайный фактоидальный, но фактический .COM-файлы (MS-DOS и оригинальный CP / M) были ограничены размером файла в один сегмент (64 КБ), поскольку изображение было просто непосредственно скопировано в сегмент и выполнено. Чем больше вы знаете, и т.д ...
0x90h