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


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

MODIFIER: Lorsque je me lance dans un nouveau projet (ou que je retourne dans un ancien projet!), Une des choses communes que je veux faire lorsque je cherche est de trouver les outils qui existent. Sur Unix (que j'ai utilisé pendant des décennies), il y a un bit d'exécution, donc c'est aussi simple que:

find . -executable -type f

Je pensais que sous Windows, qui semble avoir un mécanisme beaucoup plus complexe pour "est-ce que cet exécutable (et comment l'exécuter)", il y aurait un nombre relativement petit d'extensions de noms de fichiers qui serviraient à peu près le même objectif.

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


17
2018-01-03 19:34


origine




Réponses:


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

C:\>set PATHEXT

Sur ma machine, je reçois 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 de .scr et sont des exécutables); Windows autorisera également l'exécution d'autres extensions de fichiers, mais celles énumérées ci-dessus sont les suivantes: défaut extensions exécutables.


26
2018-01-03 20:03



Brillant trouver! - barlop
De plus, vous pouvez en ajouter plus, par exemple, ajouter .py pour laisser "pyscript" exécuter "pyscript.py"! - Phoshi
@Phoshi mais avec .py alors vous allez en tierce partie, et il n'y a pas de fin - barlop
@barlop; En effet je le suis, mais c'est une chose utile à savoir, si tangente à la question :) - Phoshi
Theres aussi .SCR pour les écrans de veille. Ils peuvent (et font) contenir du code d’exécution réel pour les écrans de veille. Ils ne sont pas dans PATHEXT. - sinni800


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


2
2018-01-03 19:45



Il est vraiment moins un format exécutable et plus un format de script, car il doit encore être analysé par msiexec.exe. - Hello71
@ Hello71: Êtes-vous vraiment 12? - paradroid
@paradroid: non, il ne l'est vraiment pas. regarde son style d'écriture. - studiohack♦
@paradroid: Est-ce vraiment important? - Hello71
@studiohack: C'est ce que je suis confus. @ Hello71: Oui, parce que si tu le fais, tu me fais peur. - paradroid


.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'avais pas utilisé d'ordinateurs aussi longtemps que je le suis, je pourrais aussi me concentrer sur les extensions qui sont des exécutables ... parce qu'elles sont passionnantes et semblent fondamentales ... et je suppose qu'elles le sont. avec le temps, .COM s'est éteint beaucoup après DOS, principalement connu je suppose après tout si, dans Windows 9x dans command.com shell. Peut-être que les vieux NT les ont beaucoup utilisés. Scripts .. vbs est venu autour de win9x peut-être .. alors de nouveaux apparaissent. ps1 est même plus récent que vbs.

.COM est très ancien .. Je ne suis pas sûr si Windows XP pour des exemples repose sur des fichiers .COM. Mais je suppose que cela a un command.com plus pour les applications héritées.

.BAT est un script .. back from DOS days. encore en usage aujourd'hui. .VBS est plus moderne mais .BAT est toujours utilisé et ne sera pas utilisé de sitôt, et les gens utilisent les deux de manière sensée. Il y a .CMD que je n'ai pas utilisé mais probablement pas si différent de rien. Il y a ps1 (powershell. C'est plus moderne que vbscript) Si nous parlons des scripts en un sens lâche, il y a .REG

Vraiment, le terme exécutable ne s'applique qu'aux fichiers EXE et .COM (.COM étant pratiquement éteint. Cependant, le shell de commandes de NT n'est pas cmd.exe, mais comme mentionné, il existe un command.com dans NT, je suppose pour les applications héritées, mais NT ne compte probablement pas sur lui.

.MSC par exemple start..run..services.msc Ils ne sont pas des exécutables..Je suppose qu'ils sont une sorte de script .. services.msc semble être écrit en xml) les choses, et dire que les pages HTML ne font qu’un parce qu’elles sont interprétées comme un script. Mais pas par l'OS si .. .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 que seuls les développeurs MS les écrivent. (ou si les autres le font, c'est très rare!)


2
2018-01-03 19:51



Malheureusement, en ajoutant .MSCau PATHEXT ne vous permet pas d'exécuter des composants logiciels enfichables MMC sans ajouter l'extension (par exemple, services au lieu de services.msc). :-( - Synetech
@Synetech car il y a déjà un services.exe. - kinokijuf
@kinokijuf, vrai; si tu cours diskmgmt (sans l'extension) d'un invite de commande ça va marcher, mais courir services habitude. toutefois aucun d'entre eux fonctionnera si vous essayez de les exécuter de la Courir dialogue sans le .msc l'extension, même si l'ensemble du système pathext la variable contient .msc. - Synetech


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

Dénoter à 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 de la variable PATHEXT (dans l'invite "environnement" de l'invite de commande) est une réponse simple et rapide, et cette réponse peut vous convenir, la réponse est incomplète. La raison qui est incomplète est que la réponse correcte dépend de ce que vous essayez de faire.

Par exemple, vous pouvez essayer de:

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

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, utiliser CMD peut être différent du menu Exécuter.

Par exemple, Le blog de Wes: Personnalisation de Windows Run Command ... note les différents emplacements vérifiés, 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 à l'invite de commandes et cela ouvre Windows Explorer. Je pense me souvenir que ne pas travailler sous Windows XP (bien que sous Windows XP, je puisse taper "start filename.zip" et obtenir le même type d'effet). Donc, soit ma mémoire est défectueuse, soit Microsoft a essayé d'apporter des améliorations aux 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 (en utilisant la commande "CD") d'un fichier zip et que vous tapez "filename.zip", le fichier s'ouvre. Lorsque je vais à cet emplacement et que je saisis "nomfichier" (sans l’extension de fichier ".zip"), Windows ne trouve pas le fichier. Cependant si je cours "ECHO %PATHEXT%" et alors "SET PATHEXT=%PATHEXT%;.ZIP" (et alors "ECHO %PATHEXT%"encore une fois, pour être sûr d'avoir l'effet désiré, alors je peux taper" filename "et l'invite de commande trouvera le fichier .ZIP. Donc, c'est l'effet de la variable% PATHEXT%.

Vous pouvez voir une autre liste d’extensions en exécutant le ASSOC commander. Par exemple, l'exécution de cette commande montre plusieurs lignes de sortie, y compris les suivantes (sur mon système) - ".zip=CompressedFolder". Ensuite, je peux voir ce qui se passe en tapant"FTYPE | FIND /I "CompressedFolder"". (Cela est destiné à la ligne de commande traditionnelle. PowerShell n’aimera pas les guillemets non échappés.) (Si vous tapez simplement"FTYPE"sans le reste de cette ligne de commande, vous verrez un peu plus de choses sur les autres extensions.)

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

MS KB 162059 consiste à ajuster la manière 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 mentionnait l'utilisation d'Explorer pour double-cliquer sur une icône. Pour voir la liste des exécutables utilisés, 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 pour pouvoir obtenir une réponse complète qui résout totalement la manière dont un composant unique de Windows peut déterminer les extensions de nom de fichier. Dans un shell, il n'y a pas qu'une seule réponse pour Windows, car Windows possède plusieurs composants qui se comportent de différentes manières. J'espère que j'ai commencé à montrer cela, et a souligné quelques ressources supplémentaires qui montrent des informations pertinentes.


2
2018-02-26 16:47