Di Windows, ekstensi nama file apa yang menunjukkan executable?

17

Pada Windows, * .exe, * .bat, * .cmd, dan * .com semuanya mewakili program atau skrip shell yang dapat dijalankan, cukup dengan mengklik dua kali. Apakah ada ekstensi nama file lain yang menunjukkan file dapat dieksekusi?

EDIT : Ketika saya melompat ke proyek baru (atau kembali ke proyek lama!), Salah satu hal umum yang ingin saya lakukan ketika melihat-lihat adalah untuk mengetahui alat apa yang ada. Di Unix (yang telah saya gunakan selama beberapa dekade), ada bit eksekusi, jadi ini sesederhana:

find . -executable -type f

Saya pikir pada Windows, yang tampaknya memiliki mekanisme yang jauh lebih kompleks untuk "apakah ini dapat dieksekusi (dan bagaimana cara mengeksekusinya)", akan ada sejumlah kecil ekstensi nama file yang akan melayani tujuan yang kira-kira sama.

Untuk proyek saya saat ini, *.exe *.bat *.cmdhampir pasti cukup, tetapi saya pikir saya akan bertanya apakah ada daftar yang berwenang.

Ken
sumber

Jawaban:

26

File dasar "yang dapat dieksekusi" (yang terlihat oleh Windows untuk dieksekusi melalui PATH) disimpan dalam variabel lingkungan yang disebut PATHEXT. Anda dapat melihat ini dari prompt perintah:

C:\>set PATHEXT

Di mesin saya, saya mendapatkan ini (WinXP):

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

Ini bukan daftar eksklusif. Windows juga akan mengeksekusi file lain (misalnya, screen saver memiliki ekstensi .scr dan dapat dieksekusi); Windows juga akan mengizinkan eksekusi ekstensi file lain, tetapi yang tercantum di atas adalah ekstensi yang dapat dieksekusi default .

Ken White
sumber
1
Temukan brilian!
barlop
1
selain itu, Anda dapat menambahkan lebih banyak - misalnya, tambahkan .py untuk membiarkan "pyscript" menjalankan "pyscript.py"!
Phoshi
@ Phoshi tetapi dengan .py maka Anda akan menjadi pihak ketiga, dan tidak ada akhir
barlop
@barlop; Memang benar, tapi itu hal yang berguna untuk diketahui, jika bersinggungan dengan pertanyaan :)
Phoshi
5
Ada juga .SCR untuk screensaver. Mereka dapat (dan memang) berisi kode eksekusi aktual untuk screensaver. Mereka tidak di PATHEXT.
sinni800
2

Yang umum untuk program pemasang adalah .msi.

studiohack
sumber
3
Ini benar-benar kurang format yang dapat dieksekusi dan lebih banyak format skrip, karena masih perlu diurai oleh msiexec.exe.
Hello71
@ Hello71: Apakah Anda benar-benar 12?
paradroid
@paradroid: tidak, dia benar-benar tidak. lihat gaya tulisannya.
studiohack
@paradroid: Apakah itu penting?
Hello71
@studiohack: Itulah yang saya bingung. @ Hello71: Ya, benar, karena jika benar, Anda membuat saya takut.
Paradroid
2

.vbs adalah sebuah skrip. dan .js

Tetapi jika Anda tahu beberapa sejarah maka Anda akan dapat menempatkan sesuatu dalam konteks yang lebih baik. Saya kira jika saya tidak menggunakan komputer selama saya punya, saya mungkin juga fokus pada mengetahui ekstensi mana yang dapat dieksekusi .. 'karena mereka cukup menarik dan tampak mendasar .. dan saya kira begitu .. Tapi perhatikan bagaimana dengan waktu, .COM mati banyak setelah DOS, hanya dikenal terutama saya kira setelah itu jika sama sekali, di windows 9x di shell command.com. Mungkin NT lama banyak menggunakannya. Script .. vbs datang sekitar waktu win9x mungkin .. sehingga yang baru muncul. ps1 bahkan lebih baru dari vbs.

.COM sudah sangat tua .. saya tidak yakin apakah windows xp untuk contoh bergantung pada file .COM. Tetapi ia memiliki command.com lebih banyak untuk aplikasi lawas.

.BAT adalah skrip..kembali dari hari DOS. masih digunakan sampai sekarang. .VBS lebih modern tetapi .BAT masih digunakan dan tidak akan digunakan dalam waktu dekat, dan orang-orang menggunakan keduanya dengan bijaksana. Ada. CMD yang belum saya gunakan tetapi mungkin tidak begitu berbeda dengan apa pun. Ada ps1 (PowerShell. Ini lebih modern daripada vbscript) Jika kita berbicara skrip dalam arti longgar, ada .REG

Benar-benar istilah yang dapat dieksekusi hanya berlaku untuk EXE dan .COM (.COM pada dasarnya sudah punah .. lebih merupakan hal win9x (command prompt di win9x adalah command.com, tidak ada cmd.exe), dan file COM adalah hal DOS. Tapi bukan CMD NT, contohnya shell perintah NT adalah cmd.exe, meskipun seperti yang disebutkan ada command.com di NT, saya kira untuk aplikasi lawas tetapi NT kemungkinan besar tidak bergantung padanya)

.MSC misalnya start..run..services.msc Mereka bukan executable .. Saya kira mereka adalah semacam script .. services.msc tampaknya ditulis dalam xml) Tetapi jika berjalan longgar maka seseorang mungkin melangkah lebih jauh untuk hal-hal non sistem, dan mengatakan halaman HTML adalah satu karena mereka ditafsirkan .. seperti skrip. Tapi bukan oleh OS ... CPL bukan skrip .. lihat di notepad. Orang-orang cenderung tidak menganggapnya sebagai executable atau skrip, mungkin karena hanya pengembang MS yang menulisnya. (atau jika orang lain melakukannya, itu sangat tidak biasa!)

barlop
sumber
Sayangnya, menambahkan .MSCke PATHEXTtidak memungkinkan Anda menjalankan snap-in MMC tanpa menambahkan ekstensi (misalnya servicesbukan services.msc). :-(
Synetech
@ Synetech karena sudah ada services.exe.
kinokijuf
@kinokijuf, benar; jika Anda menjalankan diskmgmt(tanpa ekstensi) dari command-prompt itu akan berfungsi, tetapi menjalankan servicestidak akan. Namun tidak satu pun dari mereka yang akan berfungsi jika Anda mencoba menjalankannya dari dialog Run tanpa .mscekstensi, meskipun pathextvariabel seluruh sistem berisi .msc.
Synetech
2

Di Windows, ekstensi nama file apa yang menunjukkan executable?

Dilambangkan dengan apa?

Saya tahu pertanyaan itu mungkin terdengar agak membingungkan saat ini, tetapi pertanyaan itu penting. Ketika saya menjelaskan mengapa itu penting, pertanyaannya akan menjadi lebih jelas.

Meskipun jawaban Ken White dari variabel PATHEXT (dalam "lingkungan" prompt perintah) adalah jawaban yang baik dan singkat, dan jawaban itu mungkin bekerja dengan baik untuk Anda, jawabannya tidak lengkap. Alasan yang tidak lengkap adalah bahwa jawaban yang benar berbeda berdasarkan pada apa yang Anda coba lakukan.

Misalnya, Anda dapat mencoba:

  • Jalankan program dari "prompt perintah tradisional" ("CMD"), dengan mengetikkan nama lengkapnya
  • Jalankan program dari "command prompt tradisional" ("CMD"), dengan mengetikkan nama file dasar, tetapi meninggalkan ekstensinya
  • Gunakan "mulai" perintah yang dibangun ke "prompt perintah tradisional" ("CMD")
  • Jalankan program dari PowerShell
  • Jalankan program dari item menu "Run", ditemukan di menu mulai
  • Jalankan program dari Explorer, dengan mencoba mengklik dua kali ikon yang terkait dengan file yang diakhiri dengan ekstensi
  • Beri tahu Microsoft Internet Explorer untuk membuka file yang diunduh
  • Jalankan program menggunakan fungsi dari Microsoft Windows API. (Ini adalah sesuatu yang biasanya tidak dilakukan oleh pengguna akhir, tetapi pemrogram komputer dapat melakukan ini, sehingga informasinya relevan bagi mereka.)

Beberapa metode menjalankan program ini mungkin menggunakan metode berbeda untuk menentukan ekstensi nama file apa yang mungkin didukung. Secara khusus, menggunakan CMD mungkin berbeda dari menu Run.

Misalnya, blog Wes yang membingungkan: Menyesuaikan Perintah Jalankan Windows ... mencatat berbagai lokasi yang sedang diperiksa, termasuk kunci registri.

Jawabannya juga tergantung pada versi Microsoft Windows yang digunakan. Di Windows 10, saya baru saja mengetik nama file zip pada prompt perintah, dan itu membuka Windows Explorer. Sepertinya saya ingat bahwa tidak berfungsi di Windows XP (walaupun di Windows XP, saya bisa mengetik "start filename.zip" dan mendapatkan efek yang sama). Jadi ingatan saya salah, atau Microsoft telah berusaha melakukan perbaikan pada versi Windows yang lebih baru. (Semoga bagi saya, yang terakhir.)

Pada prompt perintah tradisional Windows 10 (menjalankan "CMD"), ketika saya pergi ke lokasi (menggunakan perintah "CD") dari file zip, dan ketik "filename.zip", maka file tersebut akan terbuka. Ketika saya pergi ke lokasi itu, dan ketik "nama file" (meninggalkan ekstensi file ".zip"), maka Windows tidak menemukan file tersebut. Namun jika saya menjalankan " ECHO %PATHEXT%" dan kemudian " SET PATHEXT=%PATHEXT%;.ZIP" (dan kemudian " ECHO %PATHEXT%" lagi, untuk memastikan saya memiliki efek yang diinginkan), maka saya dapat mengetikkan "nama file" dan prompt perintah akan menemukan file .ZIP. Jadi, itulah efek dari variabel% PATHEXT%.

Anda mungkin dapat melihat daftar ekstensi lain dengan menjalankan ASSOCperintah. Sebagai contoh, menjalankan perintah itu memperlihatkan banyak jalur keluaran termasuk yang berikut (di sistem saya) - " .zip=CompressedFolder". Lalu, saya bisa melihat apa yang berjalan dengan mengetikkan " FTYPE | FIND /I "CompressedFolder"". (Itu dimaksudkan untuk baris perintah tradisional. PowerShell tidak akan menyukai tanda kutip yang tidak terhapus itu.) (Jika Anda cukup mengetik " FTYPE" tanpa sisa baris perintah itu, Anda akan melihat sedikit lebih banyak keluaran tentang ekstensi lainnya.)

Jika saya mengetik " ASSOC | FIND /C "."", di komputer Windows 10 saya, maka saya menemukan bahwa saya memiliki 339 garis output ketika saya memeriksa asosiasi file dengan cara itu.

MS KB 162059 adalah tentang menyesuaikan bagaimana Internet Explorer membuka dokumen Office.

Jadi, meminta daftar executable default terlalu kabur. Komponen Microsoft Windows yang berbeda mungkin menggunakan sumber daya yang berbeda, jadi pertanyaannya harus lebih spesifik untuk jawaban yang tepat.

Pertanyaan itu menyebutkan menggunakan Explorer untuk mengklik dua kali pada ikon. Untuk melihat daftar executable yang digunakan oleh itu, saya yakin Anda akan ingin memeriksa registri. Anda dapat menjalankan ini dari prompt perintah:

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

(Saya tidak akan mencantumkannya di sini. Ada 286 di antaranya pada komputer Windows 10 saya.)

Itu daftar ekstensi. Untuk melihat informasi lebih lanjut, termasuk detail tentang ekstensi:

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

Jadi, seperti yang Anda lihat sekarang, pertanyaan yang tampaknya tidak bersalah ini sebenarnya bisa menjadi topik yang cukup rumit. Saya percaya saya telah membuat kasus saya mengapa pertanyaan harus cukup spesifik untuk bisa mendapatkan jawaban lengkap yang benar-benar membahas bagaimana satu komponen Windows dapat menentukan ekstensi nama file. Singkatnya, tidak hanya ada satu jawaban tunggal untuk Windows, karena Windows memiliki banyak komponen yang berperilaku berbeda. Semoga saya sudah mulai menunjukkan itu, dan menunjuk ke beberapa sumber daya tambahan yang menunjukkan informasi yang relevan.

TOOGAM
sumber