เหตุใดกระบวนการต่าง ๆ จึงเห็นอินสแตนซ์ต่าง ๆ ของโฟลเดอร์ System32


10

ฉันใช้ Windows 8 Enterprise x64 ฉันเข้าสู่ระบบโดยใช้บัญชีจากกลุ่มผู้ดูแลระบบ เมื่อฉันเปิด Windows Explorer หรือพรอมต์คำสั่งจากนั้นฉันจะเห็นไฟล์cdd.dll:

Windows Explorer


C:\Windows\system32>dir cdd.dll
 Volume in drive C has no label.
 Volume Serial Number is ▨▨▨▨-▨▨▨▨

 Directory of C:\Windows\system32

07/25/2012  09:49 PM           199,680 cdd.dll

แต่ถ้าฉันเปิดกล่องโต้ตอบเปิดไฟล์จากเบราว์เซอร์ Chrome, Visual Studio หรือแอปพลิเคชันอื่น ๆ (เป็นแอพทั้งหมด 32 บิต) และไปที่C:\Windows\system32นั่นก็ไม่มีไฟล์ดังกล่าว (ตัวกรองถูกตั้งค่าให้แสดงไฟล์ทั้งหมด) และถ้าฉันเรียกใช้รายการเมนูบริบท "เปิดหน้าต่างคำสั่งที่นี่" โดยใช้ Shift + RightClick ในกล่องโต้ตอบเปิดไฟล์และพิมพ์dirยืนยันว่าไม่มีไฟล์ดังกล่าว:

เปิดไฟล์โต้ตอบ


C:\Windows\System32>dir cdd.dll
 Volume in drive C has no label.
 Volume Serial Number is ▨▨▨▨-▨▨▨▨

 Directory of C:\Windows\System32

File Not Found

เอฟเฟกต์นี้ไม่เฉพาะเจาะจงกับcdd.dllไฟล์อื่น ๆ มากมายเช่นกัน ฉันได้รับแจ้งว่านี่เป็นผลกระทบจากการ จำลองเสมือนของระบบไฟล์ซึ่งฉันรู้เพียงเล็กน้อยเท่านั้น

คุณช่วยอธิบายหรือให้ข้อมูลอ้างอิงที่อธิบายวิธีการใช้งานได้จริงหรือไม่ จริง ๆ แล้วมีหลายกรณีของSystem32โฟลเดอร์ ตำแหน่งทางกายภาพบนดิสก์คืออะไร เป็นไปได้หรือไม่ที่จะเข้าถึงจากไฟล์ประมวลผลแบบ 32 บิตในSystem32โฟลเดอร์อื่นที่ไม่ใช่ไฟล์ที่แสดงเป็นกระบวนการแบบ 32 บิตโดยค่าเริ่มต้น


พวกเขาจะปรากฏในแอพ x64 หรือไม่? ฉันรู้ว่า Windows "ซ่อน" ไดรเวอร์ 64- บิต (cdd.dll เป็นไดรเวอร์การแสดงผล) จากแอพ 32 บิต
นาธานซี

ใช่แอพ 64 บิตทั้งหมดที่อนุญาตให้เรียกดูระบบไฟล์ (เช่นมีกล่องโต้ตอบเปิดไฟล์) แสดงไฟล์เดียวกับ Windows Explorer
Vladimir Reshetnikov

@VladimirReshetnikov มีบางสิ่งที่คุณยังไม่เข้าใจคุณแก้ไขคำถามของคุณ แต่ไม่ได้รวมรายละเอียดใด ๆ เพิ่มเติมคุณยังไม่ยอมรับคำตอบใด ๆ คุณต้องการสิ่งอื่นใด
Scott Chamberlain

@ScottChamberlain ฉันเพิ่งแก้ไขแท็ก คำตอบของคุณดีมาก ขอบคุณ!
Vladimir Reshetnikov

คำตอบ:


11

ปัญหาคือการเปลี่ยนเส้นทางโฟลเดอร์หากโปรแกรม 32 บิตพยายามเข้าถึง%windir%\System32โฟลเดอร์มันจะถูกเปลี่ยนเส้นทางไปยัง%windir%\SysWOW64ไดเรกทอรีอย่างไม่สามารถระบุได้นี่เป็นความเข้ากันได้ของโปรแกรมประยุกต์ 32/64 บิต

ไฟล์ทั้งหมดใน System32 เป็น 64 บิตอย่างไรก็ตามหากโปรแกรมเขียนผิดพวกเขาอาจ hardcoded System32 ในโปรแกรมของพวกเขาเมื่อมองหา DLL เพื่อป้องกันไม่ให้โปรแกรมขัดข้องจากโปรแกรมที่เขียนไม่ถูกต้อง Microsoft ทำการเปลี่ยนเส้นทางนั้น

หากคุณต้องการเข้าถึงโฟลเดอร์ System32 ไม่ใช่โฟลเดอร์ SysWOW64 ไปที่โฟลเดอร์ "ซ่อน" %windir%\sysnativeซึ่งจะพาคุณไปยังSystem32โฟลเดอร์"ของจริง" และคุณสามารถเรียกดูโฟลเดอร์ได้ตามปกติ


%windir%เป็นตัวแปรสภาพแวดล้อมคุณสามารถพิมพ์มันเหมือนในหน้าต่างและมันจะใช้งานได้ 99% ของเวลาที่แสดงC:\Windows
Scott Chamberlain

4

WOW64 (Windows บน Windows 64 บิต) ใช้เทคโนโลยี / เทคนิคที่หลากหลายเพื่อรองรับแอปพลิเคชัน 32 บิต ในบรรดาเหล่านั้นคือการเปลี่ยนเส้นทางโฟลเดอร์และรีจิสทรี

Windows Dev Center: เดสก์ท็อปที่รันแอพพลิเคชั่นแบบ 32 บิต


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