หากคุณใช้งานระบบปฏิบัติการ Windows มาพักใหญ่แล้ว คุณคงเคยเห็นโฟลเดอร์ System32 แต่ถ้าคุณใช้คอมพิวเตอร์ 64 บิต คุณอาจสังเกตเห็นว่ามีโฟลเดอร์สองตัวในไดรฟ์ C:\Windows คือ System32 และ SysWOW64 ในบทความนี้เราจะมาทำความเข้าใจเกี่ยวกับโฟลเดอร์ทั้งสองและ ความแตกต่างระหว่าง System32 และ SysWOW64 ใน Windows 11/10
โฟลเดอร์ System32 คืออะไร?
โฟลเดอร์ System32 จัดเก็บไฟล์ระบบทั้งหมด ซึ่งมักจะเป็นไฟล์ DLL หรือไลบรารี ไฟล์เหล่านี้เป็นโปรแกรมทั่วไปที่แอปพลิเคชันใช้เพื่อเข้าถึงฟีเจอร์ของ Windows นอกจากนี้ โปรแกรมที่ติดตั้งบนคอมพิวเตอร์ของคุณก็สามารถจัดเก็บไฟล์ไว้ในที่นี้ได้เช่นกัน
เมื่อคุณติดตั้งโปรแกรม จะเกิดเหตุการณ์สองอย่างในระดับกว้างๆ โปรแกรมหลัก (EXE) จะถูกติดตั้งในโฟลเดอร์ Programs ในขณะที่ไฟล์ DLL (ซึ่งบรรจุฟังก์ชันต่างๆ) จะถูกเก็บไว้ในโฟลเดอร์ System32 นี่เป็นแนวทางปฏิบัติทั่วไป
โฟลเดอร์ SysWOW64 คืออะไร?
คุณเคยสังเกตเห็นโฟลเดอร์ C:\Program Files (x86) บนคอมพิวเตอร์ 64 บิตไหม? "x86" ในที่นี้หมายถึง 32 บิต ดังนั้นเพื่อติดตั้งโปรแกรม 32 บิตบนเครื่อง 64 บิต จึงใช้ C:\Program Files (x86) ส่วนโฟลเดอร์ C:\Program Files จะมีโปรแกรม 64 บิตและไฟล์ต่างๆ ของมัน
คุณอาจคิดว่าโฟลเดอร์ SysWOW64 ต้องมีเฉพาะ DLL 64 บิต นั่นคือเจตนาเดิม แต่สิ่งที่เกิดขึ้นจริงไม่ตรงกับที่คาดไว้ ถ้าตรวจสอบด้วยตนเอง จะพบว่ามี DLL 64 บิตเยอะมากใน System32 และ DLL 32 บิตเยอะใน SysWOW64
ทำไมโฟลเดอร์ที่ติดฉลับว่า 32 บิตจึงมี DLL 64 บิต และโฟลเดอร์ที่ติดฉลับว่า 64 บิตกลับมี DLL 32 บิต?
อ่านเพิ่มเติม: กระบวนการ splwow64.exe คืออะไร?
ความแตกต่างระหว่างโฟลเดอร์ System32 และ SysWOW64
ทั้งสองเป็นโฟลเดอร์ระบบและมีไฟล์ DLL หรือไฟล์ระบบทั่วไป แต่ทั้งคู่ไม่ได้ปฏิบัติตามชื่อของมัน เนื่องจากการเขียนโค้ดแบบฮาร์ดโค้ด (hard-coded programming)
บนคอมพิวเตอร์ 64 บิต โปรแกรม 64 บิตจะจัดเก็บ:
- ไฟล์หลักอย่าง EXE ใน C:\Program Files
- ไฟล์ระบบทั่วไปอย่าง DLL เป็นต้น ใน C:\Windows\System32 ซึ่งมีไลบรารี 64 บิต
ในขณะที่โปรแกรม 32 บิตจะจัดเก็บ:
- ไฟล์หลักใน C:\Program Files (x86)
- โฟลเดอร์ระบบทั่วไปคือ C:\Windows\SysWOW64
เมื่อโปรแกรม 32 บิตต้องการติดตั้งไฟล์ DLL 32 บิตของมันลงใน C:\Windows\System32 ระบบจะเปลี่ยนเส้นทาง (redirect) ไปที่ C:\Windows\SysWOW64 แทน ทำให้ System32 มีเฉพาะไลบรารี 64 บิตเท่านั้น Microsoft ไม่สามารถลบโฟลเดอร์นี้ได้ เพราะจะทำให้โปรแกรมจำนวนมากเสียหาย
สิ่งที่เกิดขึ้นคือ นักพัฒนาส่วนใหญ่ที่นำแอปพลิเคชัน 32 บิตมาใช้งานบนระบบ 64 บิต ยังคงใช้ C:\Windows\System32 อยู่ ซึ่งโค้ดส่วนนี้ถูกฮาร์ดโค้ดไว้ในโปรแกรมของพวกเขา เนื่องจาก Microsoft ไม่อยากทำให้โปรแกรมพัง จึงได้สร้างกลไกการเปลี่ยนเส้นทางนี้ขึ้น
สิ่งนี้ทำให้ทุกอย่างทำงานในพื้นหลังโดยที่นักพัฒนาไม่ต้องทำอะไรมาก เมื่อโปรแกรม 32 บิตร้องขอไฟล์จากโฟลเดอร์ System32 ระบบจะส่งต่อเงียบๆ ไปที่ SysWOW64 ซึ่งจัดเก็บ DLL 32 บิตทั้งหมด ไม่ต้องมีการเปลี่ยนเส้นทางสำหรับโปรแกรม 64 บิต เพราะมันมีโฟลเดอร์เริ่มต้นที่ถูกต้องอยู่แล้ว
สรุปคือ: Windows x64 มีโฟลเดอร์ System32 ที่มี DLL 64 บิต โฟลเดอร์ SysWOW64 อีกตัวหนึ่งมี DLL 32 บิต กระบวนการ 64 บิตดั้งเดิม (native) จะหา DLL ได้ที่คาดหวังไว้ใน System32 ส่วนกระบวนการ 32 บิต ระบบจะเปลี่ยนเส้นทางคำขอและแสดงโฟลเดอร์ SysWOW64 ให้เห็น
สิ่งเดียวกันก็เกิดขึ้นกับ Windows Registry เช่นกัน โปรแกรม 32 บิตและ 64 บิตถูกแยกจากกัน
เกี่ยวข้อง: โฟลเดอร์ System32 เปิดอัตโนมัติเมื่อเริ่มต้นระบบ
ความหมายของ "WOW" ใน SysWOW64
แทนที่จะตั้งชื่อว่า System64 Microsoft ได้ตั้งชื่อโฟลเดอร์นี้ว่า SysWOW64 WOW ย่อมาจาก Windows (32-bit) on Windows (64-bit) แอปพลิเคชัน 32 บิตจึงสามารถรันบน Windows 64 บิตได้ และนั่นคือที่มาของชื่อนี้
Microsoft ไม่ได้คาดการณ์ถึงสิ่งนี้แน่ๆ ไม่งั้นโฟลเดอร์ System32 ก็ไม่ควรได้ชื่อเช่นนั้น มันอาจจะง่ายกว่านี้ได้ แต่การตัดสินใจที่ไม่ได้เปลี่ยนชื่อโฟลเดอร์และใช้การเปลี่ยนเส้นทางแทนเป็นการตัดสินใจที่ดีมาก ทำให้ทั้งผู้ใช้และนักพัฒนาไม่สูญเสียแอปเมื่อย้ายมาใช้ 64 บิต
ในขณะที่ระบบ 32 บิตกำลังเลื่อนลดบทบาทลงและถูกแทนที่ด้วยคอมพิวเตอร์ 64 บิต จะใช้เวลาบ้าง Microsoft อาจจะทำอะไรบางอย่างในอนาคต หวังว่าในโค้ด 64 บิตจะไม่มีฮาร์ดโค้ดอีกแล้ว
อ่านต่อ: โฟลเดอร์ Sysnative ใน Windows 64 บิต อธิบายอย่างเข้าใจง่าย