การใช้ทางแยกใน PATH


0

ฉันสังเกตเห็นสองสามครั้งที่ดูเหมือนว่าฉันไม่สามารถใช้การเชื่อมต่อแบบ NTFS ภายใต้% SystemRoot% ใส่เส้นทางของไฟล์ที่ตามมาใน PATH ของฉันและทำให้มันทำงานกับการค้นหา DLL ได้

ตัวอย่างเช่นถ้าฉันวางไดเรกทอรี "bin" ของผู้ขายไว้ข้างใต้เป็นทางแยกและใส่ไว้ใน% PATH ของฉันฉันก็สามารถเรียกใช้โปรแกรมปฏิบัติการได้ที่นั่นเพียงแค่พิมพ์ชื่อไฟล์ปฏิบัติการบนบรรทัดคำสั่ง (โดยไม่มีพา ธ ) แต่ พวกเขาทันทีสร้างกล่องโต้ตอบที่ DLLs ใช้ปฏิบัติการจากไดเรกทอรีเดียวกันนั้นไม่สามารถพบได้

ถ้าฉันใส่เส้นทางไดเรกทอรี "bin" ของผู้ขายลงใน% PATH% โดยตรงพวกเขาจะทำงานได้ดี

เกิดอะไรขึ้นที่นี่กันแน่? มีเหตุผลที่ดีสำหรับมันหรือเป็นเพียงข้อผิดพลาดหรือไม่?

คำตอบ:


1

คุณลืม ตัวเปลี่ยนเส้นทางของระบบไฟล์ .

หากโปรแกรมที่คุณใช้อยู่เป็นแบบ 32 บิต c:\windows\system32 เปลี่ยนเส้นทางไปที่เงียบ ๆ c:\windows\SysWOW64.

คุณไม่ได้วางโฟลเดอร์ bin ไว้ใน syswow64 ดังนั้นจึงไม่มีอยู่

ไม่ใช่จุดบกพร่องเลย พฤติกรรมของ Windows มาตรฐานที่คุณควรระวัง


นั่นเป็นจุดที่ดีมาก (ดังนั้นฉันจึงโหวตให้คุณ) อย่างไรก็ตามฉันทำอย่างนั้นจริง ๆ โดยเฉพาะอย่างยิ่งมีจุดเชื่อมต่อที่ชี้ไปยังโฟลเดอร์เดียวกัน (ซึ่งมีเพียง 32 บิต exes และ DLLs) ภายใต้ทั้ง% SystemRoot% \ system32 \ และ% SystemRoot% \ SysWOW64 \ ฉันเพิ่ม ทั้งสอง ของโฟลเดอร์เหล่านั้นไปยัง PATH jic exes สามารถพบได้ในแบบนั้น แต่ไม่ใช่ DLLs
T.E.D.

... ของฉัน ความสงสัย MS ปิดการใช้งานการค้นหา DLL ผ่านทาง junctions (อาจเป็นเพียง% SystemRoot% junctions?) เพื่อป้องกันการโจมตีระบบปฏิบัติการ แต่ฉันไม่สามารถหาคำพูดใด ๆ ได้
T.E.D.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.