กล่องโต้ตอบ Run รู้ได้อย่างไรว่าแอปพลิเคชั่นอยู่ที่ไหน


72

ในฐานะผู้ใช้ระดับสูงฉันมักใช้กล่องโต้ตอบเรียกใช้

ฉันสามารถเข้าใจว่าทำไมคำสั่งต่อไปนี้จึงทำงานได้ดีเหมือนอยู่ในPATHตัวแปรสภาพแวดล้อม

mspaint
diskmgmt.msc
explorer

คำสั่งเหล่านี้ยังทำงานใน CMD

คำสั่งด้านล่างใช้งานได้ แต่ไม่ได้อยู่ในPATHและจะไม่ทำงานใน CMD

firefox
winword
iexplore

Run รู้ได้อย่างไรว่าไฟล์เหล่านี้อยู่ที่ใด?

คำตอบ:


90

เมื่อคุณเรียกใช้คำสั่งจากกล่องโต้ตอบ Run ระบบจะดูที่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
อ่านี่อาจอธิบายได้ว่าทำไมคุณไม่สามารถมีหลายโปรแกรมที่มีชื่อเดียวกันกับที่เปิดด้วยตัวเลือกต่างๆ การออกแบบไม่ดี
อยากรู้อยากเห็น dannii

2
ใช่เกือบ แต่เปิดด้วยการอ่านโต้ตอบจากHKCR\ApplicationsและRegisteredApplications
w32sh

4
Microsoft ให้วิดีโอเกี่ยวกับสิ่งนี้: channel9.msdn.com/Shows/Defrag-Tools/Defrag-Tools-133-App-Paths
magicandre1981

6
แน่นอนคุณสามารถใช้startbuiltin ซึ่งจะค้นหาเส้นทางแอป
Neil

1
นี้จะสวยดีเอกสารที่นี่ ฉันได้อธิบายด้วยว่า cmd ค้นหาได้อย่างไรที่นี่ - มันเป็นกรณีพิเศษที่แตกต่างจาก Win32 APIs
Bob

4

คำตอบของ w32shชี้ให้เห็นอย่างถูกต้องว่าปุ่มพิเศษที่ค้นหาโดยกล่องโต้ตอบเรียกใช้อยู่ที่นี่:

  • HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths \
  • HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App เส้นทาง \

มีเอกสารอย่างเป็นทางการสำหรับเส้นทางเหล่านี้

ข้อเท็จจริงที่สำคัญเกี่ยวกับคีย์เหล่านี้คือชื่อของคีย์ (เช่น "filezilla.exe") ไม่จำเป็นต้องตรงกับพา ธ แบบเต็ม แต่อย่างใด ภายใต้ Windows 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"

ฉันดูเหมือนจะไม่สามารถใช้งานได้ใน Windows 10 แต่คุณยังสามารถชี้ไปที่ไฟล์ใดก็ได้รวมถึงไฟล์แบตช์เช่น

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

ที่ช่วยให้คุณพิมพ์ "jedit" หรือ "jedit C: \ foo \ bar \ something.txt" เพื่อเรียกใช้ JVM ที่มีตัวเลือกที่เหมาะสมและการเปิดตัว / นำมาใช้ใหม่jEdit

เท่าที่ฉันเห็นชื่อคีย์ต้องลงท้ายด้วย ".exe" ดังนั้นในการสร้างนามแฝงของ "abc" คุณสร้างคีย์ "abc.exe" แม้ว่าจะไม่ได้ชี้ไปที่ไฟล์ ".exe" .


มันไม่ทำงานที่นี่ถ้าฉันใช้สวิตช์เพิ่มเติมหลังจากชื่อไฟล์ที่เรียกทำงานได้
w32sh

@ w32sh อืมฉันคิดว่ามันเปลี่ยนไปใน Win 10 :(
IMSoP

-1

มีตัวแปรสภาพแวดล้อมที่เรียกว่า PATH หรือ% PATH% ในบรรทัดคำสั่ง มันมีชุดของสถานที่เพื่อค้นหา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.