Windowsでは、どのファイル名拡張子が実行可能ファイルを表しますか?


17

Windowsでは、*。exe、*。bat、*。cmd、および* .comはすべて、ダブルクリックするだけで実行できるプログラムまたはシェルスクリプトを表します。ファイルが実行可能であることを示す他のファイル名拡張子はありますか?

編集:新しいプロジェクトにジャンプする(または古いプロジェクトに戻る)とき、見回すときによくすることの1つは、どのツールがあるかを調べることです。Unix(私は何十年も使ってきました)には実行ビットがあります。これは次のように簡単です:

find . -executable -type f

「この実行可能ファイル(および実行方法)」のはるかに複雑なメカニズムを持っているように見えるWindowsでは、ほぼ同じ目的に役立つ比較的少数のファイル名拡張子があると考えました。

私の現在のプロジェクトで*.exe *.bat *.cmdは、ほぼ確実に十分ですが、信頼できるリストがあるかどうかを尋ねると思いました。

回答:


26

基本的な「実行可能」ファイル(WindowsがPATHを介して実行するように見えるファイル)は、PATHEXTと呼ばれる環境変数に保存されます。これはコマンドプロンプトから確認できます。

C:\>set PATHEXT

私のマシンでは、これを取得します(WinXP):

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

これは排他的なリストではありません。Windowsは他のファイルも実行します(たとえば、スクリーンセーバーの拡張子は.scrで実行可能です)。Windowsでは他のファイル拡張子の実行も許可されますが、上記の拡張子はデフォルトの実行可能拡張子です。


1
素晴らしい発見!
-barlop

1
さらに、さらに追加することができます-たとえば、「pyscript」に「pyscript.py」を実行させるために.pyを追加します!
-Phoshi

@Phoshiが、.pyを使用するとサードパーティになり、終わりはありません
-barlop

@barlop; 確かに私ですが、質問に接する場合、知っておくと便利です:)
Phoshi

5
スクリーンセーバー用の.SCRもあります。これらには、スクリーンセーバーの実際の実行コードを含めることができます(実際に含めることができます)。それらはPATHEXTにありません。
sinni800

2

インストーラプログラムの一般的なものは.msiです。


3
で解析する必要があるため、実際には実行可能形式ではなく、スクリプト形式ですmsiexec.exe
Hello71

@ Hello71:あなたは本当に12歳ですか?
パラドロイド

@paradroid:いいえ、彼は本当にそうではありません。彼の執筆スタイルを見てください。
studiohack

@paradroid:それは本当に重要ですか?
Hello71

@studiohack:それは私が混乱していることです。@ Hello71:はい、そうです。あなたがそうだとすれば、あなたは私を怖がらせるからです。
パラドロイド

2

.vbsはスクリプトです。および.js

しかし、ある程度の歴史を知っていれば、状況をよりよく把握できるようになります。私が持っている限りコンピューターを使用していなかったなら、どの拡張機能が実行可能かを知ることに集中するかもしれません。時間が経つにつれて、.COMはDOSの後にかなり消滅しましたが、主にわかっているのは、もしあったとしても、command.comシェルのWindows 9xでした。おそらく、古いNTはそれらを頻繁に使用していました。スクリプト.. vbsはおそらくwin9xの頃に登場したので、新しいものが登場します。ps1はvbsよりも新しいです。

.COMは非常に古い..例のWindows XPが.COMファイルに依存しているかどうかはわかりません。しかし、それは私が推測するレガシーアプリのためのより多くのcommand.comを持っています。

.BATはDOS時代のスクリプトです。今日も使用されています。.VBSはより現代的ですが、.BATはまだ使用されており、すぐに使用できなくなることはなく、人々は賢明に両方を使用します。私が使用したことのない.CMDがありますが、おそらく何にもそれほど違いはありません。ps1(powershell。これはvbscriptよりも現代的です)緩い意味でスクリプトを話している場合、.REGがあります。

実際、実行可能ファイルという用語は、EXEと.COM(.COMは基本的には絶滅しています)にのみ適用されます。ただし、NTのCMDではなく、NTのコマンドシェルはcmd.exeですが、前述のようにNTにはcommand.comがありますが、レガシーアプリの場合は推測しますが、NTはおそらくこれに依存しません)

.MSC例:start..run..services.mscこれらは実行可能ファイルではありません。それらは一種のスクリプトであると思われます。services.mscはxmlで記述されているようですが)システム以外のもの、およびHTMLページはスクリプトのように解釈される1つの「cos」であると言います。しかし、OSによってではありません。.CPLはスクリプトではありません。メモ帳でそれらを見てください。人々はそれらを実行可能ファイルやスクリプトとは思わない傾向があります。おそらく、MS開発者だけがそれらを書いているからです。(または他の人がそうする場合、それは非常にまれです!)


残念ながら、に追加.MSCしてPATHEXTも、拡張機能を追加せずにMMCスナップインを実行することはできません(例services:)services.msc:-(
Synetech

@Synetechには既にservices.exe
-kinokijuf

@ kinokijuf、true; あなたが実行した場合diskmgmtの(拡張子なし)、コマンドプロンプト、それは動作しますが、動作してservicesいないでしょう。しかし、どれもあなたからそれらを実行しようとした場合、それらのは動作しません実行せずにダイアログ.msc拡張システム全体にもかかわらず、pathext変数が含まれています.msc
Synetech

2

Windowsでは、どのファイル名拡張子が実行可能ファイルを表しますか?

何を表しますか?

質問は現時点ではおそらく少し混乱しているように聞こえますが、問題は重要です。なぜそれが重要なのかを説明すると、問題はより明確になります。

けれどもケンホワイトの回答(コマンドプロンプトの「環境」での)PATHEXT変数のがいいと短い答えであり、その答えはあなたのために働くことがあり、答えは不完全です。不完全な理由は、あなたがしようとしていることに基づいて正しい答えが異なるからです。

たとえば、次のことを試みます。

  • 完全なファイル名を入力して、「従来のコマンドプロンプト」(「CMD」)からプログラムを実行します。
  • ベースファイル名を入力し、拡張子を省略して、「従来のコマンドプロンプト」(「CMD」)からプログラムを実行します。
  • 「従来のコマンドプロンプト」(「CMD」)に組み込まれている「開始」コマンドを使用する
  • PowerShellからプログラムを実行する
  • [スタート]メニューにある[実行]メニュー項目からプログラムを実行します
  • 拡張子で終わるファイルに関連するアイコンをダブルクリックして、エクスプローラーからプログラムを実行します
  • ダウンロードしたファイルを開くようMicrosoft Internet Explorerに指示する
  • Microsoft Windows APIの関数を使用してプログラムを実行します。(これはエンドユーザーが通常行うことはありませんが、コンピュータープログラマーが行うこともあるため、情報はユーザーに関連しています。)

プログラムを実行するこれらの方法のいくつかは、サポートされるファイル名拡張子を決定する異なる方法を使用する場合があります。特に、CMDの使用は[実行]メニューとは異なる場合があります。

たとえば、Wesの不可解なブログ:Windows Run Commandのカスタマイズ...では、レジストリキーなど、さまざまな場所がチェックされていることに注意しています。

答えは、使用されているMicrosoft Windowsのバージョンによっても異なります。Windows 10では、コマンドプロンプトでzipファイルの名前を入力すると、Windowsエクスプローラーが開きました。Windows XPでは動作しないことを覚えているようです(Windows XPでは、「start filename.zip」と入力して同じような効果を得ることができます)。したがって、私の記憶に欠陥があるか、MicrosoftがWindowsの新しいバージョンで改善を試みています。(うまくいけば、私にとっては後者です。)

Windows 10の従来のコマンドプロンプト(「CMD」を実行)で、zipファイルの場所(「CD」コマンドを使用)に移動して「filename.zip」と入力すると、ファイルが開きます。その場所に移動して「ファイル名」と入力すると(「.zip」ファイル拡張子は省略されます)、Windowsはファイルを見つけません。ただし、「ECHO %PATHEXT%」を実行してから「」を実行しSET PATHEXT=%PATHEXT%;.ZIPECHO %PATHEXT%目的の効果が得られることを確認するために「」を再度実行した場合)、「filename」と入力するとコマンドプロンプトで.ZIPファイルが見つかります。それが、%PATHEXT%変数の効果です。

ASSOCコマンドを実行すると、拡張機能の別のリストを表示できる場合があります。たとえば、そのコマンドを実行すると、以下を含む複数行の出力が表示されます(私のシステム上)-" .zip=CompressedFolder"。次に、「FTYPE | FIND /I "CompressedFolder"」と入力して、それが実行されることを確認できます。(これは、従来のコマンドラインを対象としています。PowerShellはエスケープされていない引用符を好みません。)(FTYPEコマンドラインの残りの部分なしで" "と入力すると、他の拡張機能についてかなり多くの出力が表示されます。)

ASSOC | FIND /C "."Windows 10コンピューターで「」と入力すると、その方法でファイルの関連付けを確認すると、339行の出力があることがわかります。

MS KB 162059は、Internet ExplorerがOfficeドキュメントを開く方法の調整に関するものです。

したがって、デフォルトの実行可能ファイルのリストを要求するのはあまりにもあいまいです。Microsoft Windowsの異なるコンポーネントは異なるリソースを使用する場合があるため、正確な回答を得るためには質問をより具体的にする必要があります。

質問では、エクスプローラーを使用してアイコンをダブルクリックすることに言及していました。それによって使用される実行可能ファイルのリストを見るには、レジストリをチェックアウトしたいと思うでしょう。これはコマンドプロンプトから実行できます。

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

(ここにリストしません。Windows10コンピューターには286個あります。)

それは拡張機能をリストします。拡張機能の詳細など、詳細情報を表示するには:

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

ですから、これまで見てきたように、この一見無害な質問は実際には非常に複雑なトピックになる可能性があります。Windowsの単一のコンポーネントがファイル名拡張子を決定する方法に完全に対処する完全な回答を得ることができるように、質問が非常に具体的である必要がある理由について、私が主張したと思います。Windowsにはさまざまな方法で動作する複数のコンポーネントがあるため、一言で言えば、Windowsに対する答えは1つだけではありません。うまくいけば、それを見せ始め、関連情報を示すいくつかの追加リソースを指摘しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.