रन डायलॉग कैसे पता करता है कि एप्लिकेशन कहां हैं?


72

एक शक्ति उपयोगकर्ता के रूप में, मैं अक्सर रन संवाद का उपयोग करता हूं।

मैं समझ सकता हूं कि निम्नलिखित कमांड क्यों काम करते हैं, क्योंकि वे PATHपर्यावरण चर में हैं।

mspaint
diskmgmt.msc
explorer

ये कमांड CMD में भी काम करते हैं।

नीचे दिए गए आदेश रन में काम करते हैं, लेकिन वे PATHसीएमडी में काम नहीं करते हैं।

firefox
winword
iexplore

रन कैसे पता करता है कि ये फाइलें कहां हैं?

जवाबों:


90

जब आप रन संवाद से एक कमांड निष्पादित करते हैं, तो सिस्टम App Pathsयहां रजिस्ट्री कुंजी को देखता है:

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

तथा

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

उदाहरण

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

(default) मान डेटा निष्पादन योग्य के लिए पूर्ण पथ है।

यदि यह नहीं मिला है, तो यह PATH में शामिल प्रत्येक फ़ोल्डर को देखता है।

जबकि कमांड प्रॉम्प्ट इन रजिस्ट्री कुंजियों का संदर्भ नहीं देता है। यह केवल पथ खोजता है।


5
आह, यह शायद बताता है कि आप एक ही नाम के साथ कई कार्यक्रम क्यों नहीं कर सकते हैं जैसे कि विकल्प के साथ खुला। खराब डिजाइन।
जिज्ञासु ने

2
हाँ, लगभग। लेकिन डायलॉग के साथ ओपन से HKCR\ApplicationsऔरRegisteredApplications
w32sh

4
: माइक्रोसॉफ्ट के बारे में यह एक वीडियो प्रदान की channel9.msdn.com/Shows/Defrag-Tools/Defrag-Tools-133-App-Paths
magicandre1981

6
आप निश्चित रूप से startबिलिन का उपयोग कर सकते हैं जो ऐप पथ खोजता है।
नील

1
यह यहाँ बहुत अच्छी तरह से प्रलेखित है । मैंने यह भी बताया है कि cmd अपनी खोज यहाँ कैसे करता है - यह Win32 API से अलग एक विशेष मामले का एक सा है।
बॉब

4

w32sh का उत्तर सही ढंग से बताता है कि रन डायल द्वारा खोजी गई अतिरिक्त कुंजियाँ यहाँ हैं:

  • HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App पथ \
  • HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App पथ \

नहीं है इन रास्तों के लिए आधिकारिक दस्तावेज

इन कुंजियों के बारे में एक महत्वपूर्ण तथ्य यह है कि कुंजी का नाम (जैसे "filezilla.exe") को किसी भी तरह से पूर्ण पथ से मेल नहीं खाता है। विंडोज 7 के तहत, मूल्य एक साधारण कमांड-लाइन भी हो सकता है, जो शॉर्टकट के "लक्ष्य" के रूप में उपयोग किया जा सकता है।

उदाहरण के लिए, मैंने अपनी रजिस्ट्री में यह प्रयोग किया है:

[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"

मैं विंडोज 10 में इस काम को करने के लिए प्रतीत नहीं कर सकता, लेकिन आप अभी भी किसी भी फ़ाइल पर इंगित कर सकते हैं, जिसमें एक बैच फ़ाइल भी शामिल है, जैसे

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

यह आपको उचित विकल्प के साथ JVM चलाने और jEdit को फिर से शुरू करने के लिए "jedit" या "jedit C: \ foo \ bar \ something.txt" टाइप करने की अनुमति देता है ।

जहाँ तक मैं देख सकता हूँ, कुंजी नाम ".exe" में समाप्त होना चाहिए, इसलिए "abc" का उपनाम बनाने के लिए, आप एक कुंजी "abc.exe" बनाते हैं, भले ही वह ".exe" फ़ाइल की ओर इशारा न कर रहा हो। ।


यदि मैं निष्पादन योग्य फ़ाइल नाम के बाद अतिरिक्त स्विच का उपयोग करता हूं तो यह यहां काम नहीं करता है।
w32sh

@ w32sh Hm, मुझे लगता है कि यह विन 10 :(
IMSoP

-1

एक पर्यावरण चर है जिसे PATH कहा जाता है, या कमांड लाइन में% PATH%। इसमें खोज करने के लिए स्थानों की एक श्रृंखला है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.