Windows'ta hangi dosya adı uzantıları yürütülebilir dosyayı gösterir?


18

Windows'da * .exe, * .bat, * .cmd ve * .com adreslerinin tümü, çift tıklatılarak çalıştırılabilen programları veya kabuk komut dosyalarını temsil eder. Bir dosyanın yürütülebilir olduğunu belirten başka dosya adı uzantıları var mı?

EDIT : Yeni bir projeye (ya da eski bir projeye!) Atladığımda, etrafa bakarken yapmak istediğim en yaygın şeylerden biri hangi araçların olduğunu bulmak. Unix'te (onlarca yıldır kullandığım), bir yürütme biti var, bu yüzden bu kadar basit:

find . -executable -type f

"Bu yürütülebilir (ve nasıl yürütmek)" için çok daha karmaşık bir mekanizma var gibi görünüyor Windows, kabaca aynı amaca hizmet edecek nispeten az sayıda dosya adı uzantıları olacağını düşündüm.

Mevcut projem *.exe *.bat *.cmdiçin neredeyse kesinlikle yeterli, ama yetkili bir liste olup olmadığını soracağımı düşündüm.

Yanıtlar:


27

Temel "yürütülebilir" dosyalar (Windows'un PATH üzerinden yürütmeye çalıştığı dosyalar), PATHEXT adlı çevresel bir değişkende saklanır. Bunu bir komut isteminden görebilirsiniz:

C:\>set PATHEXT

Makinemde bunu alıyorum (WinXP):

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

Bu özel bir liste değil. Windows ayrıca diğer dosyaları da yürütür (örneğin, ekran koruyucular .scr uzantısına sahiptir ve yürütülebilir); Windows ayrıca diğer dosya uzantılarının yürütülmesine izin verir, ancak yukarıda listelenenler varsayılan yürütülebilir uzantılardır.


1
Parlak bulmak!
barlop

1
Ayrıca, daha fazlasını ekleyebilirsiniz - örneğin, "pyscript" in "pyscript.py" komutunu çalıştırmasına izin vermek için .py ekleyin!
Phoshi

@Phoshi ama .py ile üçüncü tarafa gidiyorsunuz ve sonu yok
barlop

@barlop; Gerçekten öyleyim, ama soruya teğet eğer bilmek yararlı bir şey :)
Phoshi

5
Ayrıca ekran koruyucular için .SCR. Ekran koruyucular için gerçek yürütme kodu içerebilir (ve yapabilirler). Onlar sadece PATHEXT'te değiller.
sinni800

2

Yükleyici programları için yaygın olanıdır .msi.


3
Gerçekten daha az çalıştırılabilir bir biçim ve daha fazla komut dosyası biçimi, çünkü yine de ayrıştırılması gerekiyor msiexec.exe.
Merhaba71

@ Hello71: Gerçekten 12 yaşında mısınız?
paradroid

@paradroid: hayır, gerçekten değil. yazma tarzına bak.
studiohack

@paradroid: Gerçekten önemli mi?
Merhaba71

@studiohack: Kafam karıştı. @ Hello71: Evet, öyle, çünkü eğer öyleysen, beni korkutuyorsun.
paradroid

2

.vbs bir betiktir. ve .js

Ancak bir tarih biliyorsanız, bağlamı daha iyi hale getirebilirsiniz. Sanırım bilgisayarları uzun süredir kullanmamış olsaydım, hangi uzantıların çalıştırılabilir olduğunu da anlamaya odaklanabilirim. Çünkü oldukça heyecan verici ve temel görünüyorlar ... zamanla, .COM DOS sonra çok öldü, sadece esasen sonradan varsayalım, varsayalım, windows 9x'de command.com kabuğunda. Belki yaşlı NT'ler onları çok kullandılar. Komut dosyaları .. vbs belki win9x zaman geldi .. yani yenileri ortaya çıkıyor. ps1, vbs'den bile daha yenidir.

.COM çok eskidir .. Örnekler için windows xp herhangi bir .COM dosyalarına dayanıyor emin değilim. Ama sanırım eski uygulamalar için bir command.com daha var.

.BAT bir script .. DOS gün geri. bugün hala kullanımda. .VBS daha modern ama .BAT hala kullanılıyor ve yakında hiçbir zaman kullanım dışı kalmayacak ve insanlar mantıklı bir şekilde her ikisini de kullanacak. Kullanılmadığım ama muhtemelen hiçbir şeyden çok farklı olmayan .CMD var. PS1 (powershell. Bu vbscript'ten daha modern). Senaryoları gevşek bir anlamda konuşuyorsak, .REG var

Gerçekten çalıştırılabilir terimi sadece EXE ve .COM (.COM temelde soyu tükenmiş olmak için geçerlidir). Ancak NT'nin CMD'si değil NT'nin komut kabuğu cmd.exe olsa da, NT'de eski uygulamalar için sanırım NT'de bir command.com var, ancak NT büyük olasılıkla buna güvenmiyor)

.MSC örn. Start..run..services.msc Onlar çalıştırılabilir değildir .. Sanırım bir tür komut dosyasıdır .. services.msc xml ile yazılmış gibi görünüyor) Ama bu gevşek giderse bir adım daha ileri gidebilir sistem olmayan şeylere ve HTML sayfalarının biri olduğunu söyler çünkü onlar yorumlanır .. bir komut dosyası gibi. Ama işletim sistemi tarafından değil .. .CPL komut dosyaları değildir .. onlara not defterinde bakın. İnsanlar onları çalıştırılabilir veya komut dosyası olarak düşünmüyorlar, belki de sadece MS geliştiricileri yazıyor. (veya diğerleri yaparsa bu çok nadirdir!)


Ne yazık ki, ekleme .MSCiçin PATHEXTuzantı eklemeden MMC ek bileşenleri çalışmasına izin (örn vermez servicesyerine services.msc). :-(
Şubat'ta Synetech

@Synetech çünkü zaten bir services.exe.
kinokijuf

@kinokijuf, doğru; koşarsan diskmgmtbir den (uzantısı olmadan) komut istemi işe yarayacak, ama motor servicesolmaz. Ancak , sistem çapındaki değişken içeriyor olsa da , uzantı olmadan Çalıştır iletişim kutusundan çalıştırmayı denerseniz bunların hiçbiri çalışmaz . .mscpathext.msc
Synetech

2

Windows'ta hangi dosya adı uzantıları yürütülebilir dosyayı gösterir?

Neyi ifade ediyorsun?

Bu sorunun şu anda muhtemelen biraz kafa karıştırıcı olduğunu biliyorum, ama soru önemli. Neden önemli olduğunu açıkladığım gibi, soru daha açık hale gelecektir.

Ken White'ın PATHEXT değişkenine cevabı (komut isteminin "ortamında") güzel ve kısa bir cevap olmasına rağmen ve bu cevap sizin için iyi sonuç verebilir, ancak cevap eksik. Eksik olmasının nedeni, doğru cevabın yapmaya çalıştığınız şeye bağlı olarak farklı olmasıdır.

Örneğin, şunları yapmaya çalışabilirsiniz:

  • Tam dosya adını yazarak "geleneksel komut isteminden" ("CMD") bir program çalıştırın
  • Temel dosya adını yazarak ancak uzantısını bırakarak "geleneksel komut isteminden" ("CMD") bir program çalıştırın
  • "Geleneksel komut istemi" ("CMD") içine yerleştirilmiş "başlat" komutunu kullanın
  • PowerShell'den bir program çalıştırma
  • Başlat menüsünde bulunan "Çalıştır" menü öğesinden bir program çalıştırın
  • Uzantıyla biten bir dosyayla ilgili bir simgeyi çift tıklamaya çalışarak Explorer'dan bir program çalıştırın
  • Microsoft Internet Explorer'a indirilen bir dosyayı açmasını söyleyin
  • Microsoft Windows API'sındaki bir işlevi kullanarak bir program çalıştırın. (Bu, son kullanıcıların genellikle yapmadığı bir şeydir, ancak bilgisayar programcıları bunu yapabilir ve bu nedenle bilgiler kendileriyle ilgilidir.)

Bu program çalıştırma yöntemlerinden bazıları, hangi dosya adı uzantılarının desteklenebileceğini belirlemek için farklı yöntemler kullanabilir. Özellikle, CMD kullanmak Çalıştır menüsünden farklı olabilir.

Örneğin, Wes'in şaşırtıcı blogu: Windows Çalıştır Komutunu Özelleştirme ... kayıt defteri anahtarı da dahil olmak üzere farklı konumların kontrol edildiğini not eder.

Yanıt, Microsoft Windows'un hangi sürümünün kullanıldığına da bağlı olabilir. Windows 10'da, bir komut istemine zip dosyasının adını yazdım ve Windows Gezgini'ni açtı. Windows XP'de çalışmadığımı hatırlıyorum (Windows XP'de "start filename.zip" yazabilir ve aynı etkiyi elde edebilirim). Yani ya hafızam arızalı, ya da Microsoft Windows'un yeni sürümlerinde iyileştirmeler yapmaya çalışıyor. (Umarım, benim için, ikincisi.)

Windows 10'un geleneksel komut isteminde ("CMD" çalışıyor), bir zip dosyasının konumuna ("CD" komutunu kullanarak) gidip "dosyaadı.zip" yazdığımda dosya açılacak. Bu konuma gidip "dosyaadı" (".zip" dosya uzantısını bırakarak) yazdığımda, Windows dosyayı bulamıyor. Ancak " ECHO %PATHEXT%" ve sonra " SET PATHEXT=%PATHEXT%;.ZIP" (ve sonra " ECHO %PATHEXT%" komutunu çalıştırırsam, istenen efekti aldığımdan emin olmak için), "dosyaadı" yazabilirim ve komut istemi .ZIP dosyasını bulur. Yani,% PATHEXT% değişkeninin etkisi budur.

ASSOCKomutu çalıştırarak başka bir uzantı listesi görebilirsiniz . Örneğin, bu komutu çalıştırmak aşağıdakileri içeren birden fazla çıktı satırı gösterir (sistemimde) - " .zip=CompressedFolder". Sonra, " FTYPE | FIND /I "CompressedFolder"" yazarak bunun ne işe yaradığını görebiliyorum . (Bu, geleneksel komut satırı içindir. PowerShell, bu çıkış işareti olmayan tırnak işaretlerini sevmez.) (Bu FTYPEkomut satırının geri kalanı olmadan yalnızca " " yazarsanız, diğer uzantılar hakkında biraz daha fazla çıktı görürsünüz.)

ASSOC | FIND /C "."Windows 10 bilgisayarımda " " yazarsam, dosya ilişkilendirmelerini bu şekilde kontrol ettiğimde 339 satır çıktı bulduğumu fark ederim.

MS KB 162059 , Internet Explorer'ın Office belgelerini nasıl açacağını ayarlamakla ilgilidir.

Bu nedenle, varsayılan yürütülebilir dosyaların listesini istemek çok belirsizdir. Microsoft Windows'un farklı bileşenleri farklı kaynaklar kullanabilir, bu nedenle sorunun kesin bir cevap için daha spesifik olması gerekir.

Soru, bir simgeyi çift tıklamak için Explorer'ı kullandığından bahsetti. Bunun tarafından kullanılan yürütülebilir dosyaların listesini görmek için, kayıt defterini kontrol etmek isteyeceğinize inanıyorum. Bunu bir komut isteminden çalıştırabilirsiniz:

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

(Bunları burada listelemeyeceğim. Windows 10 bilgisayarımda 286 tane var.)

Bu uzantıları listeler. Uzantılarla ilgili ayrıntılar da dahil olmak üzere daha fazla bilgi görmek için:

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

Gördüğünüz gibi, bu masum görünen soru aslında oldukça karmaşık bir konu olabilir. Windows'un tek bir bileşeninin dosya adı uzantılarını nasıl belirleyebileceğini tamamen ele alan eksiksiz bir yanıt alabilmek için neden bir sorunun neden oldukça spesifik olması gerektiğine dair dava açtığımı düşünüyorum. Bir fındık kabuğunda, Windows için tek bir cevap yoktur, çünkü Windows farklı şekillerde davranan birden fazla bileşene sahiptir. Umarım bunu göstermeye başladım ve ilgili bilgileri gösteren bazı ek kaynaklara dikkat çektim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.