โปรแกรมที่ไม่ได้อยู่ในเส้นทางของฉันถูกเรียกใช้อย่างไร [ซ้ำ]


57

เป็นไปได้ซ้ำ:
ทำไมฉันสามารถรันโปรแกรมที่ไม่ได้อยู่ในตัวแปรสภาพแวดล้อม PATH ของฉันได้?

ฉันสอนเพื่อนร่วมงานเกี่ยวกับ% PATH% และพบว่าถ้าฉันเรียกใช้ "Firefox" มันใช้งานได้ แต่รู้สึกประหลาดใจที่เห็นว่ามันไม่ได้อยู่ในเส้นทางของฉัน

ฉันพลาดอะไรไป


2
มันขึ้นอยู่กับบริบท หากคุณป้อน "firefox" จากบรรทัดคำสั่งแล้ว firefox.exe ต้องอยู่ในพา ธ หรือในโฟลเดอร์ Windows หรือ Windows \ System32 หากคุณป้อน "Firefox" ในกล่องโต้ตอบเรียกใช้จะมีการใช้รีจิสทรี App Paths เพื่อให้ firefox.exe ลงทะเบียนที่นั่น
boot13

ขอบคุณ boot13 ฉันไม่ทราบถึงรีจิสตรีคีย์ของ App Paths
แม็ตธิว

คำตอบ:


101

หากคุณพยายามเรียกใช้ไฟล์ปฏิบัติการโดยระบุชื่อเฉพาะ Windows จะค้นหาไฟล์ในตำแหน่งต่อไปนี้ :

  1. ไดเรกทอรีการทำงานปัจจุบัน
  2. Windowsไดเรกทอรีเท่านั้น (ไม่มีไดเรกทอรีที่จะค้นหา)
  3. Windows\System32ไดเรกทอรี
  4. ไดเร็กทอรีที่แสดงรายการในตัวแปรสภาพแวดล้อม PATH
  5. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths(เช่นHKEY_CURRENT_USERตั้งแต่ Windows 7)

Microsoft แนะนำจริง ๆ "ลงทะเบียน" โปรแกรมประยุกต์ในApp Pathsคีย์ย่อยเพื่อหลีกเลี่ยงความต้องการสำหรับโปรแกรมประยุกต์เพื่อปรับเปลี่ยนPATHตัวแปรสภาพแวดล้อมของระบบ โปรแกรมติดตั้งของแอปพลิเคชันจะลงทะเบียนโปรแกรมที่เรียกทำงานได้


3
หนึ่งในคำตอบที่ดีที่สุดสำหรับคำถามที่ฉันเคยเห็น +1
Everett

ขอบคุณครับ เรียนรู้สิ่งใหม่ทุกวัน
แม็ตธิว

8
@ Matthew คุณยินดีต้อนรับ โปรดทราบว่าคีย์ย่อยของ "เส้นทางแอป" นั้นมีอยู่ในไฮฟ์ HKCU สำหรับแอปพลิเคชันที่ติดตั้งสำหรับผู้ใช้หนึ่งรายเท่านั้น
JC2k8

1
นั่นคือเหตุผลที่ฉันไม่ต้องยุ่งกับ PATH จริงๆจนกระทั่งฉันได้พัฒนาจาก. NET ไปจนถึงการพัฒนา Java ฉันไม่เคยพิจารณาว่าทำไมทุกอย่างในการพัฒนา. NET "ใช้งานได้"!
Stephen Swensen

2
สิ่งนี้เป็นจริงสำหรับไดอะล็อก Windows Run ใน cmd.exe และ powershell เท่านั้น 1 ถึง 4 ใช้ดูความคิดเห็นของ boot13
อเล็กซานเดอร์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.