Çalıştır iletişim kutusu uygulamaların nerede olduğunu nasıl biliyor?


72

Uzman bir kullanıcı olarak Çalıştır iletişim kutusunu sık sık kullanırım.

Aşağıdaki komutların neden PATHortam değişkeninde olduğu gibi çalıştığını anlayabiliyorum .

mspaint
diskmgmt.msc
explorer

Bu komutlar ayrıca CMD'de de çalışır.

Aşağıdaki komutlar çalıştırmada çalışır, fakat PATHyazılmazlar ve CMD'de çalışmazlar.

firefox
winword
iexplore

Run bu dosyaların nerede olduğunu nasıl biliyor?

Yanıtlar:


90

Çalıştır iletişim kutusundan bir komut çalıştırdığınızda, sistem App Pathsburada kayıt defteri anahtarına bakar :

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

ve

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

ÖRNEK

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\filezilla.exe

(default) değer verisi, yürütülebilir dosyanın tam yoluna sahiptir.

Bulunmazsa, PATH içindeki her bir klasöre bakar.

Komut İstemi bu kayıt defteri anahtarlarına başvuruda bulunmaz. Sadece PATH’ı arar.


5
Ah, bu muhtemelen neden aynı seçeneklere sahip açık aynı işleve sahip birden fazla programa sahip olamayacağınızı açıklıyor. Zayıf tasarım.
curiousdannii

2
Evet neredeyse. Ancak iletişim HKCR\ApplicationsRegisteredApplications
kutusuyla


6
Elbette start, uygulama yollarını arayan yerleşikleri kullanabilirsiniz .
Neil

1
Bu, burada oldukça iyi belgelenmiştir . Ayrıca cmd'nin burada nasıl arama yaptığını da açıkladım - Win32 API'lerden farklı bir durum.
Bob,

4

w32sh'ın cevabı , Çalıştır iletişim kutusundan aranan fazladan tuşların burada olduğuna işaret eder:

  • HKEY_CURRENT_USER \ YAZILIM \ Microsoft \ Windows \ CurrentVersion \ App Path \
  • HKEY_LOCAL_MACHINE \ YAZILIM \ Microsoft \ Windows \ CurrentVersion \ App Path \

Bu yollar için resmi belgeler var .

Bu anahtarlarla ilgili önemli bir husus, anahtarın adının (örneğin "filezilla.exe"), tam yolla hiçbir şekilde eşleşmemesi gerektiğidir. Windows 7'de, değer bir kısayolun "hedefi" olarak kullanılabilecek olana benzer basit bir komut satırı bile olabilir.

Örneğin, bu kayıt defterimde vardı:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\jedit.exe]
@="\"C:\\WINDOWS\\system32\\javaw.exe\" -Xms24M -Xmx512M -jar \"C:\\Program Files\\jEdit\\jedit.jar\" -reuseview"

Bunun Windows 10'da çalışmasını sağlayamıyorum, ancak bir toplu iş dosyası da dahil olmak üzere herhangi bir dosyayı hala işaret edebilirsiniz, örn.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\jedit.exe]
@="C:\\Program Files\\jEdit\\run-jedit.bat"

Uygun seçenekler ve lansmanı / yeniden kullanım ile JVM çalıştırmak için: Yani "jEdit" veya "\ fon \ çubuğu \ something.txt jedit C" yazabildiği JEdit .

Görebildiğim kadarıyla, anahtar adının ".exe" ile bitmesi gerekiyor, "abc" takma adı oluşturmak için "abc.exe" anahtarını oluşturmalısınız, ".exe" dosyasına işaret etmemiş olsa bile .


Çalıştırılabilir dosya adından sonra ek anahtarlar kullanırsam burada çalışmaz.
w32sh

@ w32sh Hm, sanırım Win 10'da değiştirildi :(
IMSoP

-1

Komut satırında PATH veya% PATH% adlı bir ortam değişkeni var. Aramak için bir dizi konum içerir.

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.