Чи EXE завжди можна замінити COM?


53

Попередній перегляд

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

Тому я перейменував його у файл COM, а потім скопіював його, і це дозволило (дуже професійно).

І звичайно - calc.comчи працює.

Що змусило мене запитати (лише про цікавість):

Питання

Коли програма EXE не буде працювати при перейменуванні в COM? Практично кожен файл EXE, який я перевірив, працював.

Мені б хотілося дізнатись про внутрішні причини, чому і чому ні.


42
Не копіюйте файли в папку "Запуск" - натомість створюйте ярлики.
gronostaj

4
Так, це можливо, але, як я вже сказав, мене зацікавили внутрішні працівники. Не дурний А.В. :-)
Рой Намір

11
Ви також можете перейменувати його на .scr (заставка), і воно спрацює.
pjc50

2
Це не дурний AV (окрім того, що не розуміти, що файл із розширенням com все ще можна інтерпретувати як файл PE). Ви не повинні розміщувати виконувані файли в місцях, в які легко записатись - в ідеалі, ви хочете, щоб адміністратор (з маркерів адміністратора) мав змогу писати в той самий каталог, де ви маєте виконувані файли. Використовуйте ярлики :)
Луань

1
@Luaan Я не бачу, як виключити EXE і дозволити ярлики в запуску якимось чином безпечніше, ніж дозволяти EXE і ярлики. Здається мені порівнянним.
jrw32982

Відповіді:


10

Це пов'язано з внутрішнім форматом файлу. Спочатку .com файли були простими зображеннями пам'яті, а файли .exe мали безліч заголовків. В результаті ви не змогли їх перейменувати. З плином часу і їм довелося зробити сумісність назад, Microsoft змінила це так, що ОС переглядає сам файл, щоб визначити, який тип файлу він замість розширення. У результаті при запуску перейменованого файлу Windows повністю ігнорує розширення. Дивіться посилання нижче для більш широкого пояснення.

Подібне запитання

Пояснення в блозі Microsoft


1
Гі. Хто ще про це думав? ... UNIX / Linux.
Джо

1
@Joe Будь-яка система, яка органічно зросла, так. Файли COM існували задовго до портативних виконуваних файлів, і вони були прекрасними протягом досить тривалого часу.
Луань

@Luaan Звичайно, ти маєш рацію. Я створював / використовував ком-файли на CP / M (де 64 тис. Оперативної пам'яті для мене ніколи не були проблемою). Це просто цікаво, коли одна ОС копіює щось з іншої, з якої це було правильно почати, особливо коли вони так ретельно зневажили це так довго.
Джо

@Joe Сам фанат Linux, мені подобається те, як він використовує властивості замість розширень.
Математична людина

Випадкові фактичні, але фактичні .COM файли (MS-DOS та оригінальний CP / M) були обмежені розміром файлу (64 кбіт), оскільки зображення було просто скопійовано у сегмент та виконано. Тим більше, що ти знаєш, тощо ...
0x90h
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.