Sự khác biệt giữa Thư mục “System32” và “SysWOW64” trong Windows là gì?
Trên phiên bản Windows 64-bit, bạn có hai thư mục Tệp Chương trình riêng biệt. Nhưng nó không kết thúc ở đó. Bạn cũng có hai thư mục hệ thống riêng biệt nơi lưu trữ thư viện DLL và tệp thực thi: System32 và SysWOW64. Bất chấp tên gọi, System32 chứa đầy các tệp 64-bit và SysWOW64 chứa đầy các tệp 32-bit. Vì vậy, những gì cho?
System32 là gì?
LIÊN QUAN:Tệp DLL là gì và Tại sao một tệp bị thiếu trong PC của tôi?
Thư mục System32 chứa các tệp hệ thống Windows, cả tệp thư viện .DLL được sử dụng bởi các chương trình và các tiện ích chương trình .EXE là một phần của Windows. Mặc dù hầu hết các tệp bạn tìm thấy ở đây là một phần của hệ điều hành Windows, nhưng các chương trình phần mềm của bên thứ ba đôi khi cũng cài đặt các tệp DLL của riêng chúng vào thư mục này.
Các ứng dụng đang chạy trên hệ thống của bạn có thể được cài đặt trong thư mục Tệp Chương trình của bạn hoặc ở nơi khác, nhưng chúng thường tải các thư viện toàn hệ thống từ thư mục System32.
Tách Thư viện 32 bit và 64 bit
LIÊN QUAN:Sự khác biệt giữa Thư mục "Tệp Chương trình (x86)" và "Tệp Chương trình" trong Windows là gì?
Trên phiên bản Windows 64 bit, bạn có thư mục C: \ Program Files chứa các chương trình 64 bit và tệp của chúng, vừa có thư mục C: \ Program Files (x86) chứa các chương trình 32 bit và tệp của chúng. Việc tách các tệp này sẽ rất hữu ích vì các chương trình 64 bit cần tệp DLL 64 bit và các chương trình 32 bit cần tệp DLL 32 bit.
Nếu một chương trình 32 bit tải tệp DLL mà nó cần, tìm thấy phiên bản 64 bit và cố gắng tải nó, chương trình đó sẽ bị lỗi. Bằng cách tách phần mềm 64 bit và 32 bit thành hai thư mục Tệp chương trình khác nhau, Windows đảm bảo rằng chúng sẽ không bị trộn lẫn và gây ra sự cố.
Tuy nhiên, không phải tất cả các tệp DLL đều được lưu trữ trong Tệp Chương trình. Nhiều thư viện toàn hệ thống đi kèm với Windows được lưu trữ trong C: \ System32 và một số chương trình cũng kết xuất tệp thư viện của riêng chúng tại đây. Vì vậy, cũng giống như Windows có các thư mục Tệp Chương trình 32-bit và 64-bit riêng biệt, nó cũng có các phiên bản 32-bit và 64-bit riêng biệt của thư mục System32.
System32 và SysWOW64
Trên máy tính 32 bit, tất cả các chương trình 32 bit đều lưu trữ tệp của chúng trong C: \ Program Files và vị trí thư viện trên toàn hệ thống là C: \ System32.
Trên máy tính 64 bit, các chương trình 64 bit lưu trữ tệp của chúng trong C: \ Program Files và thư mục C: \ Windows \ System32 trên toàn hệ thống chứa các thư viện 64 bit. Các chương trình 32-bit lưu trữ tệp của chúng trong C: \ Program Files (x86) và thư mục trên toàn hệ thống là C: \ Windows \ SysWOW64.
Điều này chắc chắn là phản trực giác. Mặc dù có "32" trong tên, thư mục System32 chứa các thư viện 64-bit. Và, mặc dù tên là 64, thư mục SysWOW64 chứa các thư viện 32-bit — ít nhất là trên các phiên bản Windows 64-bit.
Nói chung, bạn sẽ không cần biết điều này. Hệ điều hành Windows và các chương trình bạn sử dụng tự động đặt tệp của chúng vào đúng vị trí và sử dụng đúng thư mục. Tuy nhiên, nếu bạn cần cài đặt thủ công tệp DLL vào đúng vị trí hoặc tìm nơi cài đặt tệp đó — điều này rất hiếm — bạn sẽ cần biết đó là tệp nào.
WOW64, Giải thích
LIÊN QUAN:Tại sao Hầu hết các chương trình vẫn là 32-bit trên Phiên bản Windows 64-bit?
Phần “WOW64” của tên ở đây đề cập đến phần mềm “Windows 32 bit trên Windows 64 bit” của Microsoft, là một phần của hệ điều hành. Điều này cho phép Windows chạy các chương trình 32 bit trên phiên bản Windows 64 bit. WoW64 chuyển hướng truy cập tệp để đảm bảo các chương trình sẽ hoạt động bình thường.
Ví dụ: nếu bạn cài đặt một chương trình 32 bit trên phiên bản Windows 64 bit và nó cố gắng ghi vào thư mục C: \ Program Files, WoW64 sẽ trỏ nó vào C: \ Program Files (x86). Và, nếu nó muốn truy cập vào thư mục C: \ Windows \ System32, WoW64 sẽ trỏ nó vào C: \ Windows \ SysWOW64. Windows thực hiện điều này bằng cách sử dụng công cụ chuyển hướng hệ thống tệp.
Tất cả điều này diễn ra tự động và minh bạch trong nền. Chương trình thậm chí không cần phải biết nó đang chạy trên hệ điều hành 64 bit, cho phép các chương trình 32 bit cũ hơn chạy mà không cần sửa đổi trên các phiên bản Windows 64 bit. WOW64 cũng chuyển hướng quyền truy cập sổ đăng ký, đảm bảo có các khu vực riêng biệt của sổ đăng ký cho các chương trình 64 bit và 32 bit.
Vậy tại sao System32 là 64-bit và SysWOW64 là 32-bit?
Tất cả những điều đó đưa chúng ta trở lại câu hỏi hàng triệu đô la: Tại sao thư mục “System32” là 64-bit và SysWOW64 32-bit?
Câu trả lời dường như là nhiều ứng dụng 32-bit đã được mã hóa cứng để sử dụng thư mục C: \ Windows \ System32. Khi các nhà phát triển biên dịch lại các ứng dụng này cho phiên bản Windows 64 bit, họ tiếp tục sử dụng thư mục C: \ Windows \ System32.
Thay vì đổi tên thư mục và buộc các nhà phát triển chuyển sang thư mục mới, phá vỡ nhiều ứng dụng trong quá trình này, Microsoft đã để “System32” làm thư mục thư viện hệ thống tiêu chuẩn. Họ đã tạo một thư mục thư viện mới cho các ứng dụng chạy dưới lớp WoW64, mà họ đặt tên là “SysWOW64”. Khi bạn nghĩ về nó theo cách này, cái tên có ý nghĩa hơn.
Vâng, hơi ngớ ngẩn khi một thư mục có "32" trong tên bây giờ là 64-bit. Có lẽ Microsoft nên nhận ra điều đó khi họ đặt tên nó là C: \ Windows \ System32 vào những năm 90. Tuy nhiên, mặc dù cách đặt tên đơn giản hơn sẽ rất hay, nhưng không đáng để bạn phá vỡ một loạt các chương trình và tạo ra nhiều công việc hơn cho các nhà phát triển chỉ để đạt được điều đó. Điều đó có nghĩa là chúng tôi gặp khó khăn với System32 và SysWOW64 trong tương lai gần.