Với việc phát hành Windows 7 64-bit, đã có một chút thay đổi được giới thiệu trong việc phân bổ thông thường các thư mục trong thư mục Windows. Hai thư mục mới được bao gồm trong phiên bản 64-bit của Windows 10, Windows 8 và Windows 70. Chúng là Sysnative và SysWOW64 thư mục. Điều này chỉ có trong Windows 64-bit. Nếu bạn chạy Windows 32 bit trên máy 64 bit, bạn sẽ không thấy chúng. Bạn sẽ không thấy chúng khi chạy Windows 32 bit trên máy 32 bit.
Có một thư mục khác bên ngoài thư mục Windows và nó được gọi là Tệp chương trình (x86) . Chúng tôi đã quen với tên của thư mục Program Files chứa các tệp thực thi của các chương trình của chúng tôi. Trong hệ thống 64-bit, các chương trình 64-bit được lưu trữ trong thư mục Tệp Chương trình trong khi các chương trình 32-bit được lưu trữ trong Tệp Chương trình (x86). Tuy nhiên, Windows sử dụng một cái gì đó giống như một mô phỏng để chạy các chương trình 32-bit trên máy 64-bit. Và do đó, cần phải biết và hiểu các thư mục hệ thống trong Windows (64 bit) là gì để bạn biết cách truy cập tệp bạn muốn.
Không giống như các máy 32 bit, nơi các DLL 32 bit được lưu trữ trong thư mục System32 , phiên bản Windows 64 bit lưu trữ các tệp DLL liên quan đến 64 bit trong thư mục System32. Điều này là để giảm bớt các mục đích lập trình và cung cấp khả năng tương thích ngược. Nghĩa là, nếu một chương trình 64 bit tham chiếu đến System32 trong mã của nó, nó sẽ tự động nhận DLL 64 bit khi được gọi. Điều này giúp các nhà phát triển vì họ không phải thay đổi mã trong các chương trình của họ dành cho Windows 64-bit.
Nói tóm lại, Windows đã di chuyển tất cả các DLL 32-bit từ thư mục System32 trong thư mục Windows sang một số thư mục khác để các chương trình trước đó không cần phải được mã hóa lại để có được các DLL thích hợp ngay cả khi sử dụng API - sau khi nâng cấp lên 64-bit. Sự cố xảy ra khi một ứng dụng 32 bit cố gắng truy cập vào thư mục System32. Trong trường hợp này, chương trình sẽ bị lỗi vì nó không được viết để xử lý các tệp DLL 64-bit.
Đọc :Thư mục Panther là gì?
Thư mục SysWOW64 trong Windows 64-bit
Tất cả các tệp DLL 32-bit đã được chuyển vào thư mục SysWOW64 mới trong phiên bản 64-bit của Windows 10, Windows 8 và Windows 7, vì vậy khi các chương trình 32-bit gọi các tệp DLL 32-bit, chúng phải truy cập vào thư mục SysWOW64.
Bạn có thể cảm thấy rằng các nhà phát triển sẽ phải quét các chương trình và ứng dụng của họ để trỏ các chức năng DLL đến thư mục SysWOW64. Nhưng Microsoft đã chăm sóc nó. Nếu đó là một chương trình 32 bit đang gọi C:\ Windows \ System32 , trình giả lập sẽ chuyển hướng đường dẫn đến C:\ Windows \ SysWOW64 . Nghĩa là, để chạy các chương trình 32-bit trong Windows 64-bit, một trình giả lập được sử dụng để có khả năng tương thích ngược thích hợp và tránh lỗi khi gọi tệp DLL.
Đọc :Thư mục FOUND.000 là gì?
Thư mục Sysnative trong Windows 64-bit
Có thể có trường hợp một chương trình hoặc ứng dụng 32 bit có thể cần DLL 64 bit. Trong trường hợp đó, bạn sẽ phải sử dụng thư mục chuyển hướng Sysnative . Bạn có thể coi SysNative là một thư mục ảo và một bí danh trỏ đến thư mục System32. Nó không tồn tại thực tế trên hệ thống của bạn.
Vì vậy, nếu chương trình 32 bit của bạn cần truy cập DLL 64 bit, không sử dụng C:\ Windows \ System32 bởi vì trình giả lập chương trình 32-bit sẽ đưa nó đến thư mục DLL 32-bit có tên là SysWOW64. Thay vào đó, hãy sử dụng C:\ Windows \ SysNative như là đường dẫn đến chương trình DLL. Sử dụng Sysnative trong đường dẫn sẽ chuyển hướng nó đến thư mục System32 thay vì thư mục SysWOW64.
Nếu bạn mở File Windows Explorer, bạn sẽ không tìm thấy thư mục Sysnative trong C:\ Windows. Ngay cả khi bạn đặt Tùy chọn thư mục để hiển thị các thư mục ẩn và thư mục hệ thống. Điều này là do, Windows File Explorer là một chương trình 64 bit khi chạy trong Windows 64 bit và thư mục Sysnative chỉ hiển thị và có thể truy cập được từ các chương trình 32 bit.
Tóm lại:
- Thư mục System32 chứa các tệp DLL 64 bit.
- SysWOW64 chứa các tệp DLL 32 bit và các chương trình 32 bit được tự động chuyển hướng đến thư mục này
- Sysnative là một thư mục chuyển hướng cho phép các chương trình 32 bit gọi các tệp DLL 64 bit.
Đọc thêm:MSDN.
Bạn muốn biết sự khác biệt giữa thư mục System32 và SysWOW64?