Est-ce que EXE peut toujours être remplacé par COM?

53

Aperçu

Notre logiciel antivirus ne m'a pas autorisé à copier un fichier EXE dans mon dossier de démarrage Windows 7 (calc.exe par exemple), car il s'agit d'un fichier EXE.

Je l'ai donc renommé en fichier COM, puis copié et autorisé (très professionnel).

Et bien sûr, calc.comça marche.

Ce qui m'a amené à demander (uniquement par curiosité):

Question

Quand un programme EXE ne s'exécutera-t-il pas lorsqu'il sera renommé COM? Presque chaque fichier exe que j'ai vérifié a fonctionné.

J'aimerais connaître les internes pour pourquoi et pourquoi pas.

Royi Namir
la source
42
Ne copiez pas de fichiers dans le dossier de démarrage, créez plutôt des raccourcis.
gronostaj
4
Oui, c'est possible, mais comme je l'ai dit, les internes intéressés, moi. Pas le stupide AV. :-)
Royi Namir
11
Vous pouvez également le renommer en .scr (économiseur d’écran) et cela fonctionnera.
pjc50
2
Ce n'est pas un stupide AV (à part de ne pas comprendre qu'un fichier avec une extension com peut toujours être interprété comme un fichier PE). Vous ne devez pas placer d'exécutables dans des emplacements faciles à écrire. Idéalement, vous souhaitez uniquement que l'administrateur (avec un jeton d'administrateur) soit autorisé à écrire dans le même répertoire que celui où vous avez les exécutables. Utilisez les raccourcis :)
Luaan
1
@Luaan Je ne vois pas en quoi l'exclusion des fichiers EXE et l'utilisation de raccourcis dans Startup sont en quelque sorte plus sécuritaires que le fait d'autoriser à la fois les fichiers EXE et les raccourcis. Semble comparable à moi.
jrw32982 soutient Monica

Réponses:

10

Cela a à voir avec le format interne du fichier. À l'origine, les fichiers .com étaient de simples images de mémoire et les fichiers .exe étaient associés à de nombreux en-têtes. En conséquence, vous ne pouvez pas les renommer. À mesure que le temps passait et qu'ils devaient rendre les choses compatibles en amont, Microsoft l'a modifiée pour que le système d'exploitation examine le fichier lui-même afin de déterminer le type de fichier à la place de l'extension. Par conséquent, lorsque vous exécutez le fichier renommé, Windows ignore entièrement l'extension. Voir les liens ci-dessous pour une explication plus détaillée.

Question similaire

Explication du blog Microsoft

Homme de maths
la source
1
Gee. Qui d'autre a pensé à ça? ... UNIX / Linux.
Joe
1
@ Joe Tout système qui a connu une croissance organique, oui. Les fichiers COM existaient bien avant les exécutables portables et étaient parfaitement corrects pendant assez longtemps.
Luaan
@ Laura Bien sûr, vous avez raison. Je créais / utilisais des fichiers com sur CP / M (où 64k de RAM n’avaient jamais été un problème pour moi). C'est juste intéressant lorsqu'un système d'exploitation copie quelque chose d'un autre sur lequel il faut bien commencer - surtout quand il l'a tant décrié depuis si longtemps.
Joe
@ Joe Étant moi-même un fan de Linux, j'aime la façon dont il utilise les propriétés au lieu des extensions.
Math Man
Des faits aléatoires, mais les fichiers .COM réels (MS-DOS et CP / M d'origine) étaient limités à une taille de fichier d'un segment (64 Ko), car l'image était simplement copiée directement dans un segment et exécutée. Plus vous en savez, etc ...
0x90h