Su Windows, quali estensioni di file indicano un eseguibile?


17

Su Windows, * .exe, * .bat, * .cmd e * .com rappresentano tutti programmi o script shell che possono essere eseguiti, semplicemente facendo doppio clic su di essi. Ci sono altre estensioni di file che indicano che un file è eseguibile?

EDIT : Quando salto in un nuovo progetto (o di nuovo in un vecchio progetto!), Una delle cose comuni che voglio fare quando mi guardo intorno è scoprire quali strumenti ci sono. Su Unix (che ho usato per decenni), c'è un bit di esecuzione, quindi è semplice come:

find . -executable -type f

Ho pensato che su Windows, che sembra avere un meccanismo molto più complesso per "è questo eseguibile (e come lo eseguo)", ci sarebbe un numero relativamente piccolo di estensioni di file che servirebbero più o meno allo stesso scopo.

Per il mio progetto attuale, *.exe *.bat *.cmdè quasi certamente sufficiente, ma ho pensato di chiedere se esistesse un elenco autorevole.

Risposte:


26

I file "eseguibili" di base (quelli che Windows sembra eseguire tramite il PERCORSO) sono memorizzati in una variabile ambientale chiamata PATHEXT. Puoi vederlo da un prompt dei comandi:

C:\>set PATHEXT

Sul mio computer, ottengo questo (WinXP):

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

Questo non è un elenco esclusivo. Windows eseguirà anche altri file (ad esempio, gli screen saver hanno un'estensione di .scr e sono eseguibili); Windows consentirà anche l'esecuzione di altre estensioni di file, ma quelle sopra elencate sono le estensioni eseguibili predefinite .


1
Brillante trovare!
barlop

1
inoltre, puoi aggiungere altro - ad esempio, aggiungi .py per consentire a "pyscript" di eseguire "pyscript.py"!
Phoshi,

@Phoshi ma con .py stai andando in terza parte e non c'è fine
barlop

@barlop; In effetti lo sono, ma è una cosa utile da sapere, se tangente alla domanda :)
Phoshi

5
C'è anche .SCR per i salvaschermi. Possono (e fare) contenere il codice di esecuzione effettivo per gli screensaver. Non sono solo in PATHEXT.
sinni800,

2

Uno comune per i programmi di installazione è .msi.


3
È davvero meno un formato eseguibile e più un formato di script, dal momento che deve ancora essere analizzato msiexec.exe.
Ciao,

@ Hello71: hai davvero 12 anni?
paradroid

@paradroid: no, non lo è davvero. guarda il suo stile di scrittura.
studiohack

@paradroid: importa davvero?
Ciao, il

@studiohack: questo è ciò di cui sono confuso. @ Hello71: Sì, perché, se lo sei, mi fai paura.
paradroid

2

.vbs è uno script. e .js

Ma se conosci un po 'di storia, sarai in grado di mettere meglio le cose nel contesto. Suppongo che se non avessi usato i computer per tutto il tempo che potevo, potrei anche concentrarmi sul sapere quali estensioni sono eseguibili .. perché sono piuttosto eccitanti e sembrano fondamentali .. e suppongo che lo siano .. Ma nota come con il tempo, .COM si è spento molto dopo il DOS, noto principalmente suppongo che dopo, se non del tutto, in Windows 9x nella shell command.com. Forse i vecchi NT li usavano molto. Script ... vbs è venuto in giro win9x forse ... quindi ne appaiono di nuovi. ps1 è persino più recente di vbs.

.COM è molto vecchio .. non sono sicuro che Windows XP, ad esempio, si basi su file .COM. Ma ha un command.com in più per le app legacy credo.

.BAT è uno script..di ritorno dai giorni di DOS. ancora in uso oggi. .VBS è più moderno ma .BAT è ancora usato e non andrà fuori uso in qualsiasi momento presto, e le persone usano sensibilmente entrambi. C'è .CMD che non ho usato ma probabilmente non è così diverso da niente. C'è ps1 (powershell. Questo è più moderno di vbscript) Se stiamo parlando di script in senso lato, ci sono .REG

In realtà il termine eseguibile si applica solo a EXE e .COM (.COM essendo sostanzialmente estinto .. più una cosa win9x (il prompt dei comandi in win9x era command.com, non c'era cmd.exe), ei file COM sono una cosa DOS. Ma non la CMD di NT, ad esempio, la shell dei comandi di NT è cmd.exe anche se, come detto, c'è un command.com in NT, credo per le app legacy, ma molto probabilmente NT non si basa su di esso)

.MSC es. Start..run..services.msc Non sono eseguibili..immagino che siano una specie di script .. services.msc sembra essere scritto in xml) Ma se si perde, si potrebbe fare un passo avanti a cose non di sistema, e dire che le pagine HTML sono una cosa così perché sono interpretate ... come uno script. Ma non dal sistema operativo però ... .CPL non sono script .. guardali nel blocco note. Le persone tendono a non pensarli come eseguibili o script, forse perché solo gli sviluppatori MS li scrivono. (o se lo fanno gli altri, è molto raro!)


Sfortunatamente, l'aggiunta .MSCa PATHEXTnon ti consente di eseguire snap-in MMC senza aggiungere l'estensione (ad esempio servicesinvece di services.msc). :-(
Synetech,

@Synetech perché c'è già un services.exe.
Kinokijuf,

@kinokijuf, true; se si esegue diskmgmt(senza l'estensione) da un prompt dei comandi funzionerà, ma l'esecuzione servicesnon lo farà. Tuttavia, nessuno di questi funzionerà se si tenta di eseguirli dalla finestra di dialogo Esegui senza l' .mscestensione, anche se la pathextvariabile a livello di sistema contiene .msc.
Synetech,

2

Su Windows, quali estensioni di file indicano un eseguibile?

Indicare a cosa?

So che la domanda probabilmente suona un po 'confusa al momento, ma la domanda è importante. Mentre spiego perché è importante, la domanda diventerà più chiara.

Sebbene la risposta di Ken White della variabile PATHEXT (nel "ambiente" del prompt dei comandi) sia una risposta piacevole e breve, e quella risposta potrebbe funzionare bene per te, la risposta è incompleta. Il motivo che è incompleto è che la risposta corretta è diversa in base a ciò che si sta tentando di fare.

Ad esempio, potresti provare a:

  • Esegui un programma da un "prompt dei comandi tradizionale" ("CMD"), digitando il suo nome file completo
  • Esegui un programma da un "prompt dei comandi tradizionale" ("CMD"), digitando il nome file di base, ma lasciando la sua estensione
  • Utilizzare il comando "start" incorporato nel "prompt dei comandi tradizionale" ("CMD")
  • Esegui un programma da PowerShell
  • Esegui un programma dalla voce di menu "Esegui", presente nel menu di avvio
  • Esegui un programma da Explorer, cercando di fare doppio clic su un'icona relativa a un file che termina con l'estensione
  • Di 'a Microsoft Internet Explorer di aprire un file scaricato
  • Esegui un programma utilizzando una funzione dall'API di Microsoft Windows. (Questo è qualcosa che gli utenti finali in genere non fanno, ma i programmatori di computer possono farlo, e quindi le informazioni sono rilevanti per loro.)

Alcuni di questi metodi di esecuzione dei programmi possono utilizzare diversi metodi per determinare quali estensioni di file possono essere supportate. In particolare, l'utilizzo di CMD potrebbe essere diverso dal menu Esegui.

Ad esempio, il blog sconcertante di Wes: Personalizzare il comando Esegui di Windows ... rileva i diversi percorsi da controllare, inclusa la chiave di registro.

La risposta potrebbe anche dipendere dalla versione di Microsoft Windows utilizzata. In Windows 10, ho appena digitato il nome di un file zip al prompt dei comandi e ha aperto Esplora risorse. Mi sembra di ricordare che non funziona in Windows XP (sebbene in Windows XP, potrei digitare "start filename.zip" e ottenere lo stesso tipo di effetto). Quindi o la mia memoria è difettosa o Microsoft ha cercato di apportare miglioramenti nelle versioni più recenti di Windows. (Spero, per me, quest'ultimo.)

Nel tradizionale prompt dei comandi di Windows 10 (eseguendo "CMD"), quando vado nella posizione (usando il comando "CD") di un file zip e digito "nomefile.zip", il file si aprirà. Quando vado in quella posizione e digito "nome file" (tralasciando l'estensione del file ".zip"), Windows non trova il file. Tuttavia, se eseguo " ECHO %PATHEXT%" e poi " SET PATHEXT=%PATHEXT%;.ZIP" (e poi " ECHO %PATHEXT%" di nuovo, per essere sicuro di avere l'effetto desiderato), posso digitare "nomefile" e il prompt dei comandi troverà il file .ZIP. Quindi, questo è l'effetto della variabile% PATHEXT%.

È possibile visualizzare un altro elenco di estensioni eseguendo il ASSOCcomando. Ad esempio, l'esecuzione di questo comando mostra più righe di output, tra cui le seguenti (sul mio sistema) - " .zip=CompressedFolder". Quindi, posso vedere cosa succede digitando " FTYPE | FIND /I "CompressedFolder"". (Questo è pensato per la tradizionale riga di comando. A PowerShell non piaceranno quelle virgolette senza caratteri di escape.) (Se digiti " FTYPE" senza il resto di quella riga di comando, vedrai un po 'più di output su altre estensioni.)

Se digito " ASSOC | FIND /C "."", sul mio computer Windows 10, allora scopro di avere 339 righe di output quando controllo le associazioni di file in quel modo.

MS KB 162059 è tutto sulla regolazione di come Internet Explorer apre i documenti di Office.

Pertanto, chiedere l'elenco degli eseguibili predefiniti è troppo vago. Componenti diversi di Microsoft Windows possono utilizzare risorse diverse, quindi la domanda deve essere più specifica per una risposta precisa.

La domanda menzionava l'uso di Explorer per fare doppio clic su un'icona. Per vedere l'elenco dei file eseguibili utilizzati, credo che vorrai controllare il registro. Puoi eseguirlo da un prompt dei comandi:

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

(Non li elencherò qui. Ce ne sono 286 sul mio computer Windows 10.)

Questo elenca le estensioni. Per visualizzare ulteriori informazioni, inclusi i dettagli sulle estensioni:

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

Quindi, come puoi vedere ormai, questa domanda apparentemente innocente può effettivamente essere un argomento piuttosto complesso. Credo di aver fatto il mio caso sul perché una domanda dovrebbe essere abbastanza specifica per essere in grado di ottenere una risposta completa che affronti totalmente il modo in cui un singolo componente di Windows può determinare le estensioni del nome file. In poche parole, non esiste una sola risposta per Windows, poiché Windows ha più componenti che si comportano in modi diversi. Spero di aver iniziato a mostrarlo, e ho indicato alcune risorse aggiuntive che mostrano informazioni rilevanti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.