Tại sao các quy trình khác nhau nhìn thấy các phiên bản khác nhau của thư mục System32?


10

Tôi đang chạy Windows 8 Enterprise x64. Tôi đã đăng nhập bằng tài khoản từ nhóm Quản trị viên. Khi tôi mở Windows Explorer hoặc một dấu nhắc lệnh, thì tôi có thể thấy tệp 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

Nhưng nếu tôi mở hộp thoại Mở tệp từ trình duyệt Chrome, Visual Studio hoặc một số ứng dụng khác (tất cả chúng đều là ứng dụng 32 bit) và điều hướng đến C:\Windows\system32thì không có tệp nào như vậy (bộ lọc được đặt để hiển thị Tất cả tệp). Và nếu tôi gọi mục menu ngữ cảnh "Mở cửa sổ lệnh ở đây" bằng Shift + RightClick trong hộp thoại Mở tệp và nhập dirnó sẽ xác nhận rằng không có tệp nào như vậy:

Mở hộp thoại tập tin


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

Hiệu ứng này không cụ thể cdd.dll, nhiều tệp khác cũng khác. Tôi đã nói rằng đây là một hiệu ứng của ảo hóa hệ thống tập tin , mà tôi biết rất ít về.

Bạn có thể vui lòng giải thích hoặc cho tôi một tài liệu tham khảo giải thích làm thế nào điều này thực sự hoạt động? Có thực sự có một số trường hợp khác nhau của System32thư mục. Vị trí vật lý của họ trên đĩa là gì? Có thể truy cập từ tệp quy trình 32 bit trong một System32thư mục khác với tệp được hiển thị cho quy trình 32 bit theo mặc định.


Chúng có xuất hiện trong bất kỳ ứng dụng x64 nào không? Tôi có linh cảm rằng Windows "ẩn" trình điều khiển 64 bit (cdd.dll là trình điều khiển hiển thị) khỏi các ứng dụng 32 bit.
Nathan C

Có, tất cả các ứng dụng 64 bit cho phép duyệt hệ thống tệp (ví dụ: có hộp thoại Mở tệp) hiển thị các tệp giống như Windows Explorer.
Vladimir Reshetnikov

@VladimirReshetnikov Có điều gì đó bạn vẫn không hiểu, bạn đã chỉnh sửa câu hỏi của mình nhưng không bao gồm bất kỳ chi tiết nào nữa, bạn cũng không chấp nhận bất kỳ câu trả lời nào. Bạn có cần làm gì khác không?
Scott Chamberlain

@ScottChamberlain Tôi chỉ chỉnh sửa thẻ. Bạn trả lời là rất tốt. Cảm ơn!
Vladimir Reshetnikov

Câu trả lời:


11

Vấn đề là chuyển hướng thư mục , Nếu chương trình 32 bit cố gắng truy cập %windir%\System32thư mục, nó sẽ được chuyển hướng vô hình vào %windir%\SysWOW64thư mục, đây là khả năng tương thích ứng dụng 32/64 bit.

Tất cả các tệp trong System32 là 64 bit, tuy nhiên nếu một chương trình được viết không chính xác, chúng có thể đã mã hóa System32 vào chương trình của chúng khi tìm kiếm một DLL. Để ngăn sự cố chương trình ngẫu nhiên từ các chương trình được viết không chính xác, Microsoft thực hiện chuyển hướng đó.

Nếu bạn cần truy cập thư mục System32 chứ không phải thư mục SysWOW64 điều hướng đến thư mục "ẩn" %windir%\sysnativesẽ đưa bạn đến System32thư mục "thực" và bạn có thể duyệt thư mục như bình thường.


%windir%là một biến môi trường, bạn có thể nhập nó giống như trong cửa sổ và nó sẽ hoạt động, 99% thời gian nó đại diệnC:\Windows
Scott Chamberlain

4

WOW64 (Windows trên Windows 64bit) sử dụng các công nghệ / kỹ thuật khác nhau để hỗ trợ các ứng dụng 32 bit. Trong số đó là chuyển hướng thư mục và đăng ký.

Windows Dev Center: Máy tính để bàn chạy các ứng dụng 32 bit


Và đặc biệt hơn, thông tin về Hồ sơ tương thích ứng dụng là điều làm nên điều kỳ diệu này.
David Hoelzer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.