อะไรคือความแตกต่างระหว่างโฟลเดอร์“ System32” และ“ SysWOW64” ใน Windows

ใน Windows เวอร์ชัน 64 บิตคุณมีโฟลเดอร์ Program Files สองโฟลเดอร์แยกกัน แต่มันไม่จบแค่นั้น นอกจากนี้คุณยังมีไดเร็กทอรีระบบที่แยกจากกันซึ่งจัดเก็บไลบรารี DLL และไฟล์ปฏิบัติการ: System32 และ SysWOW64 แม้จะมีชื่อ System32 เต็มไปด้วยไฟล์ 64 บิตและ SysWOW64 เต็มไปด้วยไฟล์ 32 บิต ให้อะไร?

System32 คืออะไร?

ที่เกี่ยวข้อง: ไฟล์ DLL คืออะไรและเหตุใดจึงหายไปจากพีซีของฉัน

ไดเร็กทอรี System32 มีไฟล์ระบบ Windows ทั้งไฟล์ไลบรารี. DLL ที่ใช้โดยโปรแกรมและยูทิลิตี้โปรแกรม. EXE ซึ่งเป็นส่วนหนึ่งของ Windows แม้ว่าไฟล์ส่วนใหญ่ที่คุณพบในที่นี้จะเป็นส่วนหนึ่งของระบบปฏิบัติการ Windows แต่บางครั้งโปรแกรมซอฟต์แวร์ของ บริษัท อื่นจะติดตั้งไฟล์ DLL ของตนเองลงในโฟลเดอร์นี้ด้วยเช่นกัน

แอปพลิเคชันที่ทำงานบนระบบของคุณอาจถูกติดตั้งไว้ในโฟลเดอร์ Program Files หรือที่อื่น ๆ แต่มักจะโหลดไลบรารีทั้งระบบจากโฟลเดอร์ System32

การแยกไลบรารี 32 บิตและ 64 บิต

ที่เกี่ยวข้อง: อะไรคือความแตกต่างระหว่างโฟลเดอร์ "Program Files (x86)" และ "Program Files" ใน Windows

ใน Windows เวอร์ชัน 64 บิตคุณจะมีโฟลเดอร์ C: \ Program Files ที่มีโปรแกรม 64 บิตและไฟล์และโฟลเดอร์ C: \ Program Files (x86) ที่มีโปรแกรม 32 บิตและไฟล์ การแยกไฟล์เหล่านี้มีประโยชน์เนื่องจากโปรแกรม 64 บิตต้องการไฟล์ DLL 64 บิตและโปรแกรม 32 บิตต้องการไฟล์ DLL 32 บิต

หากโปรแกรม 32 บิตไปโหลดไฟล์ DLL ที่ต้องการพบเวอร์ชัน 64 บิตและพยายามโหลดโปรแกรมจะหยุดทำงาน ด้วยการแยกซอฟต์แวร์ 64 บิตและ 32 บิตออกเป็นโฟลเดอร์ Program Files ที่แตกต่างกันสองโฟลเดอร์ Windows จะช่วยให้มั่นใจได้ว่าจะไม่ปะปนกันและก่อให้เกิดปัญหา

อย่างไรก็ตามไฟล์ DLL บางไฟล์ไม่ได้ถูกเก็บไว้ใน Program Files ไลบรารีทั้งระบบจำนวนมากที่มาพร้อมกับ Windows จะถูกเก็บไว้ใน C: \ System32 และบางโปรแกรมก็ถ่ายโอนไฟล์ไลบรารีของตนเองที่นี่ ดังนั้นเช่นเดียวกับที่ Windows มีโฟลเดอร์ Program Files 32 บิตและ 64 บิตแยกกัน แต่ก็มีโฟลเดอร์ System32 เวอร์ชัน 32 บิตและ 64 บิตแยกกัน

System32 และ SysWOW64

บนคอมพิวเตอร์ 32 บิตโปรแกรม 32 บิตทั้งหมดจะเก็บไฟล์ไว้ใน C: \ Program Files และตำแหน่งไลบรารีทั้งระบบคือ C: \ System32

บนคอมพิวเตอร์ 64 บิตโปรแกรม 64 บิตจะเก็บไฟล์ไว้ใน C: \ Program Files และโฟลเดอร์ C: \ Windows \ System32 ทั้งระบบประกอบด้วยไลบรารี 64 บิต โปรแกรม 32 บิตเก็บไฟล์ไว้ใน C: \ Program Files (x86) และโฟลเดอร์ทั้งระบบคือ C: \ Windows \ SysWOW64

นี่เป็นเรื่องที่ตรงกันข้ามอย่างแน่นอน แม้จะมีชื่อ“ 32” แต่โฟลเดอร์ System32 ก็มีไลบรารี 64 บิต และแม้จะมีชื่อ 64 แต่โฟลเดอร์ SysWOW64 ก็มีไลบรารี 32 บิตอย่างน้อยก็ใน Windows เวอร์ชัน 64 บิต

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

WOW64 อธิบาย

ที่เกี่ยวข้อง: เหตุใดโปรแกรมส่วนใหญ่จึงยังคงเป็น 32 บิตใน Windows เวอร์ชัน 64 บิต

ส่วน "WOW64" ในที่นี้หมายถึงซอฟต์แวร์ "Windows 32 บิตบน Windows 64 บิต" ของ Microsoft ซึ่งเป็นส่วนหนึ่งของระบบปฏิบัติการ สิ่งนี้ช่วยให้ Windows สามารถเรียกใช้โปรแกรม 32 บิตบน Windows เวอร์ชัน 64 บิต WoW64 เปลี่ยนเส้นทางการเข้าถึงไฟล์เพื่อให้แน่ใจว่าโปรแกรมต่างๆจะทำงานได้อย่างถูกต้อง

ตัวอย่างเช่นหากคุณติดตั้งโปรแกรม 32 บิตบน Windows เวอร์ชัน 64 บิตและพยายามเขียนลงในโฟลเดอร์ C: \ Program Files WoW64 จะชี้ไปที่ C: \ Program Files (x86) และหากต้องการเข้าถึงโฟลเดอร์ C: \ Windows \ System32 WoW64 จะชี้ไปที่ C: \ Windows \ SysWOW64 Windows ทำสิ่งนี้โดยใช้ตัวเปลี่ยนเส้นทางระบบไฟล์

ทั้งหมดนี้เกิดขึ้นโดยอัตโนมัติและโปร่งใสในพื้นหลัง โปรแกรมไม่จำเป็นต้องรู้ด้วยซ้ำว่ากำลังทำงานบนระบบปฏิบัติการ 64 บิตซึ่งช่วยให้โปรแกรม 32 บิตรุ่นเก่าสามารถทำงานได้โดยไม่ต้องแก้ไขบน Windows เวอร์ชัน 64 บิต WOW64 ยังเปลี่ยนเส้นทางการเข้าถึงรีจิสทรีเพื่อให้แน่ใจว่ามีพื้นที่แยกต่างหากของรีจิสทรีสำหรับโปรแกรม 64 บิตและ 32 บิต

เหตุใด System32 64-bit และ SysWOW64 32-bit

ทั้งหมดนี้ทำให้เราย้อนกลับไปสู่คำถามล้านดอลลาร์: ทำไมโฟลเดอร์“ System32” 64 บิตและ SysWOW64 32 บิต

คำตอบดูเหมือนจะเป็นแอปพลิเคชัน 32 บิตจำนวนมากถูกเข้ารหัสเพื่อใช้ไดเรกทอรี C: \ Windows \ System32 เมื่อนักพัฒนาคอมไพล์แอปพลิเคชันเหล่านี้ใหม่สำหรับ Windows เวอร์ชัน 64 บิตพวกเขายังคงใช้ไดเร็กทอรี C: \ Windows \ System32

แทนที่จะเปลี่ยนชื่อไดเร็กทอรีและบังคับให้นักพัฒนาย้ายไปยังไดเร็กทอรีใหม่โดยทำลายแอปพลิเคชันจำนวนมากในกระบวนการนี้ Microsoft ทิ้ง“ System32” ไว้เป็นไดเร็กทอรีไลบรารีระบบมาตรฐาน พวกเขาสร้างไดเร็กทอรีไลบรารีใหม่สำหรับแอปพลิเคชันที่ทำงานภายใต้เลเยอร์ WoW64 ซึ่งตั้งชื่อว่า“ SysWOW64” เมื่อคุณคิดอย่างนี้ชื่อก็เข้าท่ากว่า

ใช่มันเป็นเรื่องโง่เล็กน้อยที่ไดเร็กทอรีที่มี "32" ในชื่อตอนนี้เป็น 64 บิต บางที Microsoft น่าจะเห็นว่ามาเมื่อพวกเขาตั้งชื่อ C: \ Windows \ System32 ในยุค 90 แต่ถึงแม้ว่ารูปแบบการตั้งชื่อที่ตรงไปตรงมาจะดีกว่า แต่ก็ไม่คุ้มที่จะทำลายโปรแกรมจำนวนมากและสร้างผลงานเพิ่มเติมสำหรับนักพัฒนาเพื่อไปที่นั่น นั่นหมายความว่าเราติดอยู่กับ System32 และ SysWOW64 ในอนาคตอันใกล้