Sous Windows, quelles extensions de nom de fichier désignent un exécutable?

18

Sous Windows, * .exe, * .bat, * .cmd et * .com représentent tous des programmes ou des scripts shell qui peuvent être exécutés, simplement en double-cliquant dessus. Existe-t-il d'autres extensions de nom de fichier qui indiquent qu'un fichier est exécutable?

EDIT : Lorsque je saute dans un nouveau projet (ou que je retourne dans un ancien projet!), L'une des choses courantes que je veux faire en regardant autour est de découvrir quels outils il y a. Sur Unix (que j'utilise depuis des décennies), il y a un bit d'exécution, donc c'est aussi simple que:

find . -executable -type f

J'ai pensé que sur Windows, qui semble avoir un mécanisme beaucoup plus complexe pour "est-ce exécutable (et comment puis-je l'exécuter)", il y aurait un nombre relativement petit d'extensions de nom de fichier qui serviraient à peu près le même objectif.

Pour mon projet actuel, *.exe *.bat *.cmdc'est presque certainement suffisant, mais j'ai pensé que je demanderais s'il y avait une liste faisant autorité.

Ken
la source

Réponses:

27

Les fichiers "exécutables" de base (ceux que Windows cherche à exécuter via le PATH) sont stockés dans une variable d'environnement appelée PATHEXT. Vous pouvez le voir à partir d'une invite de commande:

C:\>set PATHEXT

Sur ma machine, j'obtiens ceci (WinXP):

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.PSC1

Ce n'est pas une liste exclusive. Windows exécutera également d'autres fichiers (par exemple, les économiseurs d'écran ont une extension .scr et sont exécutables); Windows autorise également l'exécution d'autres extensions de fichier, mais celles répertoriées ci-dessus sont les extensions exécutables par défaut .

Ken White
la source
1
Super trouvaille!
barlop
1
en plus, vous pouvez ajouter plus - par exemple, ajoutez .py pour laisser "pyscript" exécuter "pyscript.py"!
Phoshi
@Phoshi mais avec .py alors vous passez à la troisième partie, et il n'y a pas de fin
barlop
@barlop; En effet je le suis, mais c'est une chose utile à savoir, si tangentielle à la question :)
Phoshi
5
Theres également .SCR pour les économiseurs d'écran. Ils peuvent (et contiennent) du code d'exécution réel pour les économiseurs d'écran. Ils ne sont tout simplement pas dans PATHEXT.
sinni800
2

Un programme courant pour les programmes d'installation est .msi.

studiohack
la source
3
C'est vraiment moins un format exécutable et plus un format de script, car il doit encore être analysé par msiexec.exe.
Hello71
@ Hello71: Tu as vraiment 12 ans?
Paradroid
@paradroid: non, il ne l'est vraiment pas. regardez son style d'écriture.
studiohack
@paradroid: Est-ce vraiment important?
Hello71
@studiohack: C'est de cela que je suis confus. @ Hello71: Oui, car si tu l'es, tu me fais peur.
paradroid
2

.vbs est un script. et .js

Mais si vous connaissez un peu d'histoire, vous pourrez mieux mettre les choses en contexte. Je suppose que si je n'ai pas utilisé d'ordinateurs depuis aussi longtemps que je le fais, je pourrais aussi me concentrer sur la connaissance des extensions qui sont des exécutables .. parce qu'elles sont assez excitantes et semblent fondamentales .. et je suppose qu'elles le sont .. avec le temps, .COM s'est éteint beaucoup après DOS, juste principalement connu, je suppose qu'après cela, le cas échéant, dans Windows 9x dans le shell command.com. Peut-être que les anciens NT les utilisaient beaucoup. Scripts .. vbs est venu peut-être au moment de win9x .. donc de nouveaux apparaissent. ps1 est encore plus récent que vbs.

.COM est très ancien .. je ne sais pas si Windows XP pour des exemples s'appuie sur des fichiers .COM. Mais il a un command.com plus pour les applications héritées, je suppose.

.BAT est un script..back des jours DOS. toujours en usage aujourd'hui. .VBS est plus moderne mais .BAT est toujours utilisé et ne sera pas mis hors service de si tôt, et les gens utilisent sensiblement les deux. Il y a .CMD que je n'ai pas utilisé mais probablement pas si différent de quoi que ce soit. Il y a ps1 (powershell. C'est plus moderne que vbscript) Si nous parlons de scripts au sens large, il y a .REG

Vraiment, le terme exécutable ne s'applique qu'à EXE et .COM (.COM étant essentiellement éteint .. plus une chose win9x (l'invite de commande dans win9x était command.com, il n'y avait pas cmd.exe), et les fichiers COM sont une chose DOS. Mais pas le CMD de NT, par exemple, l'interpréteur de commandes de NT est cmd.exe bien que, comme mentionné, il existe un command.com dans NT, je suppose pour les applications héritées, mais NT ne dépend probablement pas de lui)

.MSC eg start..run..services.msc Ce ne sont pas des exécutables..Je suppose que c'est une sorte de script .. services.msc semble être écrit en xml) aux choses non système, et dire que les pages HTML sont un car elles sont interprétées .. comme un script. Mais pas par le système d'exploitation cependant .. .CPL ne sont pas des scripts .. regardez-les dans le bloc-notes. Les gens ont tendance à ne pas les considérer comme des exécutables ou des scripts, peut-être parce que seuls les développeurs MS les écrivent. (ou si d'autres le font, c'est très rare!)

barlop
la source
Malheureusement, l'ajout .MSCà la PATHEXTne vous permet pas d'exécuter des composants logiciels enfichables MMC sans ajouter l'extension (par exemple servicesau lieu de services.msc). :-(
Synetech
@Synetech car il y en a déjà un services.exe.
kinokijuf
@kinokijuf, vrai; si vous exécutez diskmgmt(sans l'extension) à partir d'une invite de commande, cela fonctionnera, mais servicespas. Cependant, aucun d'entre eux ne fonctionnera si vous essayez de les exécuter à partir de la boîte de dialogue Exécuter sans l' .mscextension, même si la pathextvariable à l' échelle du système contient .msc.
Synetech
2

Sous Windows, quelles extensions de nom de fichier désignent un exécutable?

Dénote quoi?

Je sais que cette question semble probablement un peu confuse pour le moment, mais la question est importante. Comme j'explique pourquoi c'est important, la question deviendra plus claire.

Bien que la réponse de Ken White à la variable PATHEXT (dans "l'environnement" de l'invite de commande) soit une réponse agréable et courte, et que cette réponse puisse bien fonctionner pour vous, la réponse est incomplète. La raison qui est incomplète est que la bonne réponse est différente selon ce que vous essayez de faire.

Par exemple, vous pouvez essayer de:

  • Exécutez un programme à partir d'une "invite de commande traditionnelle" ("CMD"), en tapant son nom de fichier complet
  • Exécutez un programme à partir d'une "invite de commande traditionnelle" ("CMD"), en tapant le nom de fichier de base, mais en laissant son extension
  • Utilisez la commande "start" intégrée à l '"invite de commande traditionnelle" ("CMD")
  • Exécutez un programme à partir de PowerShell
  • Exécutez un programme à partir de l'élément de menu "Exécuter", qui se trouve dans le menu Démarrer
  • Exécutez un programme à partir d'Explorer, en essayant de double-cliquer sur une icône liée à un fichier se terminant par l'extension
  • Dites à Microsoft Internet Explorer d'ouvrir un fichier téléchargé
  • Exécutez un programme à l'aide d'une fonction de l'API Microsoft Windows. (C'est quelque chose que les utilisateurs finaux ne font généralement pas, mais les programmeurs informatiques peuvent le faire, et les informations sont donc pertinentes pour eux.)

Certaines de ces méthodes d'exécution de programmes peuvent utiliser différentes méthodes pour déterminer quelles extensions de nom de fichier peuvent être prises en charge. En particulier, l'utilisation de CMD peut être différente de celle du menu Exécuter.

Par exemple, le blog déroutant de Wes: Customizing Windows Run Command ... note différents emplacements en cours de vérification, y compris la clé de registre.

La réponse peut également dépendre de la version de Microsoft Windows utilisée. Dans Windows 10, je viens de taper le nom d'un fichier zip à une invite de commande et il a ouvert l'Explorateur Windows. Je semble me souvenir que cela ne fonctionne pas dans Windows XP (bien que dans Windows XP, je pourrais taper "start filename.zip" et obtenir le même genre d'effet). Donc, soit ma mémoire est défectueuse, soit Microsoft a essayé d'apporter des améliorations dans les nouvelles versions de Windows. (J'espère, pour moi, ce dernier.)

Dans l'invite de commande traditionnelle de Windows 10 (exécutant "CMD"), lorsque je vais à l'emplacement (à l'aide de la commande "CD") d'un fichier zip et que je tape "nom_fichier.zip", le fichier s'ouvrira. Lorsque je vais à cet emplacement et que je tape "nom de fichier" (en laissant l'extension ".zip"), Windows ne trouve pas le fichier. Cependant, si je lance " ECHO %PATHEXT%" puis " SET PATHEXT=%PATHEXT%;.ZIP" (puis " ECHO %PATHEXT%" à nouveau, pour m'assurer que j'ai eu l'effet souhaité), je peux taper "nom de fichier" et l'invite de commande trouvera le fichier .ZIP. C'est donc l'effet de la variable% PATHEXT%.

Vous pourrez peut-être voir une autre liste d'extensions en exécutant la ASSOCcommande. Par exemple, l'exécution de cette commande affiche plusieurs lignes de sortie, dont les suivantes (sur mon système) - " .zip=CompressedFolder". Ensuite, je peux voir ce que cela fonctionne en tapant " FTYPE | FIND /I "CompressedFolder"". (Cela est destiné à la ligne de commande traditionnelle. PowerShell n'aimera pas ces guillemets non échappés.) (Si vous tapez simplement " FTYPE" sans le reste de cette ligne de commande, vous verrez beaucoup plus de résultats sur les autres extensions.)

Si je tape " ASSOC | FIND /C "."" sur mon ordinateur Windows 10, je constate que j'ai 339 lignes de sortie lorsque je vérifie les associations de fichiers de cette façon.

MS KB 162059 consiste à ajuster la façon dont Internet Explorer ouvre les documents Office.

Donc, demander la liste des exécutables par défaut est trop vague. Différents composants de Microsoft Windows peuvent utiliser des ressources différentes, la question doit donc être plus spécifique pour une réponse précise.

La question mentionne l'utilisation de l'Explorateur pour double-cliquer sur une icône. Pour voir la liste des exécutables utilisés par cela, je pense que vous voudrez vérifier le registre. Vous pouvez l'exécuter à partir d'une invite de commande:

reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts

(Je ne vais pas les énumérer ici. Il y en a 286 sur mon ordinateur Windows 10.)

Cela répertorie les extensions. Pour voir plus d'informations, y compris des détails sur les extensions:

reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts /s

Donc, comme vous pouvez le voir maintenant, cette question apparemment innocente peut en fait être un sujet assez complexe. Je crois que j'ai expliqué pourquoi une question devrait être assez spécifique afin de pouvoir obtenir une réponse complète qui traite totalement de la façon dont un seul composant de Windows peut déterminer les extensions de nom de fichier. En un mot, il n'y a pas qu'une seule réponse pour Windows, car Windows a plusieurs composants qui se comportent de différentes manières. J'espère que j'ai commencé à le montrer et que j'ai indiqué quelques ressources supplémentaires qui montrent des informations pertinentes.

TOOGAM
la source