Welche Dateinamenerweiterungen bezeichnen unter Windows eine ausführbare Datei?

17

Unter Windows stehen * .exe, * .bat, * .cmd und * .com für Programme oder Shell-Skripte, die durch einfaches Doppelklicken ausgeführt werden können. Gibt es andere Dateinamenerweiterungen, die darauf hinweisen, dass eine Datei ausführbar ist?

BEARBEITEN : Wenn ich in ein neues Projekt (oder zurück in ein altes Projekt!) Springe, möchte ich häufig herausfinden, welche Tools es gibt. Unter Unix (das ich seit Jahrzehnten verwende) gibt es ein Ausführungsbit. Dies ist also so einfach wie:

find . -executable -type f

Ich stellte fest, dass es unter Windows, das einen viel komplexeren Mechanismus zu haben scheint für "Ist diese ausführbare Datei (und wie führe ich sie aus?)", Eine relativ kleine Anzahl von Dateinamenerweiterungen gibt, die ungefähr denselben Zweck erfüllen.

Für mein aktuelles Projekt *.exe *.bat *.cmdist es mit ziemlicher Sicherheit ausreichend, aber ich dachte, ich würde fragen, ob es eine maßgebliche Liste gibt.

Ken
quelle

Antworten:

26

Die grundlegenden "ausführbaren" Dateien (die Windows über PATH ausführen möchte) werden in einer Umgebungsvariablen namens PATHEXT gespeichert. Sie können dies an einer Eingabeaufforderung sehen:

C:\>set PATHEXT

Auf meinem Rechner bekomme ich folgendes (WinXP):

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

Dies ist keine exklusive Liste. Windows führt auch andere Dateien aus (z. B. haben Bildschirmschoner die Erweiterung .scr und sind ausführbare Dateien). Windows erlaubt auch die Ausführung anderer Dateierweiterungen, die oben aufgeführten sind jedoch die standardmäßig ausführbaren Erweiterungen.

Ken White
quelle
1
Geniale Entdeckung!
Barlop
1
Zusätzlich können Sie weitere hinzufügen - zum Beispiel .py hinzufügen, damit "pyscript" "pyscript.py" ausführt!
Phoshi
@Phoshi aber mit .py gehst du dann auf Drittanbieter um und es gibt kein Ende
Barlop
@barlop; In der Tat bin ich, aber es ist eine nützliche Sache zu wissen, wenn tangential zu der Frage :)
Phoshi
5
Theres auch .SCR für Bildschirmschoner. Sie können (und müssen) tatsächlichen Ausführungscode für die Bildschirmschoner enthalten. Sie sind einfach nicht in PATHEXT.
sinni800
2

Eine übliche Methode für Installationsprogramme ist .msi.

Studiohack
quelle
3
Es ist wirklich weniger ein ausführbares Format als vielmehr ein Skriptformat, da es noch analysiert werden muss msiexec.exe.
Hallo71
@ Hallo71: Bist du wirklich 12?
Paradroid
@paradroid: nein, er ist wirklich nicht. Schau dir seinen Schreibstil an.
Studiohack
@paradroid: Ist das wirklich wichtig?
Hallo71
@studiohack: Darüber bin ich verwirrt. @ Hallo71: Ja, das tut es, denn wenn du es bist, erschreckst du mich.
Paradroid
2

.vbs ist ein Skript. und .js

Aber wenn Sie etwas über Geschichte wissen, können Sie die Dinge besser in einen Zusammenhang bringen. Ich nehme an, wenn ich Computer so lange nicht benutzt hätte, könnte ich mich auch darauf konzentrieren zu wissen, welche Erweiterungen ausführbar sind. Weil sie ziemlich aufregend sind und grundlegend erscheinen. Und ich nehme an, sie sind. Aber beachte, wie Mit der Zeit starb .COM viel nach DOS aus, nur hauptsächlich bekannt, ich nehme an, danach, wenn überhaupt, in Windows 9x in der command.com-Shell. Vielleicht haben alte NTs sie oft benutzt. Scripte .. vbs kam vielleicht um win9x zeit .. so erscheinen neue. ps1 ist noch neuer als vbs.

.COM ist sehr alt. Ich bin nicht sicher, ob Windows XP für Beispiele auf irgendwelche .COM-Dateien angewiesen ist. Aber es hat eine command.com mehr für Legacy-Apps, denke ich.

.BAT ist ein Skript ... aus DOS-Tagen. noch heute im einsatz. .VBS ist moderner, aber .BAT wird immer noch verwendet und wird in Kürze nicht mehr verwendet, und die Leute verwenden beide sinnvollerweise. Es gibt .CMD, die ich nicht benutzt habe, aber wahrscheinlich nicht so anders als alles andere. Es gibt ps1 (Powershell. Das ist moderner als vbscript). Wenn wir Skripte in einem losen Sinn sprechen, gibt es .REG

Wirklich, der Begriff "ausführbar" bezieht sich nur auf EXE und .COM (.COM ist im Grunde genommen ausgestorben). Aber nicht NTs CMD, zum Beispiel, NTs Befehlsshell ist cmd.exe, obwohl es, wie erwähnt, eine command.com in NT gibt.

.MSC zB start..run..services.msc Sie sind keine ausführbaren Dateien. Ich nehme an, sie sind eine Art Skript. Services.msc scheint in xml geschrieben zu sein Nicht-System-Dinge und sagen, HTML-Seiten sind eins, weil sie interpretiert werden .. wie ein Skript. Aber nicht vom Betriebssystem .. .CPL sind keine Skripte .. schau sie dir im Editor an. Die Leute neigen dazu, sie nicht als ausführbare Dateien oder Skripte zu betrachten, vielleicht weil sie nur von MS-Entwicklern geschrieben werden. (oder wenn andere das tun, dann ist das sehr ungewöhnlich!)

barlop
quelle
Leider können Sie beim Hinzufügen .MSCzu PATHEXTMMC-Snap-Ins nicht ausführen, ohne die Erweiterung hinzuzufügen (z . B. servicesanstelle von services.msc). :-(
Synetech
@Synetech da gibt es schon einen services.exe.
Kinokijuf
@kinokijuf, wahr; Wenn Sie diskmgmt(ohne die Erweiterung) über eine Eingabeaufforderung ausführen, funktioniert dies, wird jedoch servicesnicht ausgeführt. Doch keiner von ihnen wird funktionieren , wenn Sie versuchen , sie aus dem laufen Run Dialog ohne die .mscErweiterung, auch wenn die systemweite pathextVariable enthält .msc.
Synetech
2

Welche Dateinamenerweiterungen bezeichnen unter Windows eine ausführbare Datei?

Was bezeichnen?

Ich weiß, dass diese Frage im Moment wahrscheinlich etwas verwirrend klingt, aber die Frage ist wichtig. Wenn ich erkläre, warum es wichtig ist, wird die Frage klarer.

Obwohl Ken Whites Antwort auf die Variable PATHEXT (in der "Umgebung" der Eingabeaufforderung) eine nette und kurze Antwort ist und diese Antwort möglicherweise gut für Sie funktioniert, ist die Antwort unvollständig. Der Grund, der unvollständig ist, ist, dass die richtige Antwort je nach dem, was Sie versuchen, unterschiedlich ist.

Zum Beispiel könnten Sie versuchen:

  • Führen Sie ein Programm über eine "herkömmliche Eingabeaufforderung" ("CMD") aus, indem Sie den vollständigen Dateinamen eingeben
  • Führen Sie ein Programm über eine "herkömmliche Eingabeaufforderung" ("CMD") aus, indem Sie den Basisdateinamen eingeben, die Erweiterung jedoch beibehalten
  • Verwenden Sie den Befehl "start", der in die "traditionelle Eingabeaufforderung" ("CMD") integriert ist.
  • Führen Sie ein Programm von PowerShell aus
  • Führen Sie ein Programm über den Menüpunkt "Ausführen" aus, der sich im Startmenü befindet
  • Führen Sie im Explorer ein Programm aus, indem Sie auf ein Symbol doppelklicken, das sich auf eine Datei mit der Endung bezieht
  • Weisen Sie Microsoft Internet Explorer an, eine heruntergeladene Datei zu öffnen
  • Führen Sie ein Programm mit einer Funktion aus der Microsoft Windows-API aus. (Dies ist etwas, was Endbenutzer normalerweise nicht tun, aber Computerprogrammierer tun dies möglicherweise, und daher sind die Informationen für sie relevant.)

Einige dieser Methoden zum Ausführen von Programmen verwenden möglicherweise andere Methoden zum Ermitteln der unterstützten Dateinamenerweiterungen. Die Verwendung von CMD kann sich insbesondere vom Menü Ausführen unterscheiden.

In Wes 'rätselhaftem Blog: Anpassen des Windows-Ausführungsbefehls ... wird beispielsweise darauf hingewiesen, dass verschiedene Speicherorte überprüft werden, einschließlich des Registrierungsschlüssels.

Die Antwort kann auch davon abhängen, welche Version von Microsoft Windows verwendet wird. In Windows 10 habe ich nur den Namen einer Zip-Datei an einer Eingabeaufforderung eingegeben und Windows Explorer geöffnet. Ich erinnere mich anscheinend, dass es unter Windows XP nicht funktioniert (obwohl ich unter Windows XP "start filename.zip" eingeben und den gleichen Effekt erzielen könnte). Entweder ist mein Speicher fehlerhaft, oder Microsoft hat versucht, Verbesserungen in neueren Windows-Versionen vorzunehmen. (Hoffentlich für mich letzteres.)

Wenn ich in der herkömmlichen Windows 10-Eingabeaufforderung (mit "CMD") zum Speicherort (mit dem Befehl "CD") einer Zip-Datei gehe und "filename.zip" eingebe, wird die Datei geöffnet. Wenn ich an diesen Speicherort gehe und "Dateiname" eingebe (ohne die Dateierweiterung ".zip"), findet Windows die Datei nicht. Wenn ich jedoch " ECHO %PATHEXT%" und dann " SET PATHEXT=%PATHEXT%;.ZIP" (und dann " ECHO %PATHEXT%" erneut, um sicherzustellen, dass ich den gewünschten Effekt hatte) ausführe, kann ich "filename" eingeben und die Eingabeaufforderung findet die .ZIP-Datei. Das ist also der Effekt der Variable% PATHEXT%.

Möglicherweise können Sie eine andere Liste von Erweiterungen anzeigen, indem Sie den ASSOCBefehl ausführen. Wenn Sie diesen Befehl beispielsweise ausführen, werden mehrere Ausgabezeilen angezeigt, einschließlich der folgenden (auf meinem System) - " .zip=CompressedFolder". Dann kann ich sehen, was das läuft, indem ich " FTYPE | FIND /I "CompressedFolder"" eingebe . (Dies ist für die herkömmliche Befehlszeile gedacht. PowerShell wird diese Anführungszeichen nicht mögen.) (Wenn Sie nur " FTYPE" ohne den Rest dieser Befehlszeile eingeben , werden Sie einiges mehr über andere Erweiterungen erfahren .)

Wenn ich ASSOC | FIND /C "."auf meinem Windows 10-Computer " " eingebe, werden 339 Zeilen ausgegeben, wenn ich auf diese Weise nach Dateizuordnungen suche.

In MS KB 162059 dreht sich alles darum, wie Internet Explorer Office-Dokumente öffnet.

Daher ist es zu vage, nach der Liste der standardmäßig ausführbaren Dateien zu fragen. Verschiedene Komponenten von Microsoft Windows verwenden möglicherweise unterschiedliche Ressourcen. Daher muss die Frage für eine präzise Antwort präziser sein.

In der Frage wurde die Verwendung des Explorers zum Doppelklicken auf ein Symbol erwähnt. Um die Liste der ausführbaren Dateien anzuzeigen, die von diesem Programm verwendet werden, sollten Sie die Registrierung überprüfen. Sie können dies an einer Eingabeaufforderung ausführen:

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

(Ich werde sie hier nicht auflisten. Auf meinem Windows 10-Computer befinden sich 286 davon.)

Das listet die Erweiterungen auf. So zeigen Sie weitere Informationen an, einschließlich Details zu den Erweiterungen:

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

Wie Sie jetzt sehen können, kann diese scheinbar unschuldige Frage tatsächlich ein recht komplexes Thema sein. Ich glaube, ich habe mir überlegt, warum eine Frage sehr spezifisch sein sollte, um eine vollständige Antwort zu erhalten, die genau beschreibt, wie eine einzelne Komponente von Windows die Dateinamenerweiterungen bestimmen kann. Kurz gesagt, es gibt für Windows nicht nur eine einzige Antwort, da Windows über mehrere Komponenten verfügt, die sich unterschiedlich verhalten. Hoffentlich habe ich damit begonnen, dies zu zeigen, und auf einige zusätzliche Ressourcen verwiesen, die relevante Informationen enthalten.

TOOGAM
quelle