Chế độ tương thích giữa các chế độ khác trong Windows hoạt động như thế nào?


Câu trả lời:


31

Chế độ tương thích đạt được bằng cách sử dụng cái gọi là miếng chêm. Có một bài viết hay trên TechNet mô tả cách thức hoạt động của chúng.

Các tệp ứng dụng Windows chứa một bảng nhập cho biết trình tải ứng dụng mà DLL ứng dụng cần và chức năng nào nó sử dụng từ chúng. Một quá trình có thể ví dụ tham khảo GetVersionExtrong kernel32.dll. Khi một chương trình sẽ chạy trong chế độ tương thích, thì shim được đặt giữa ứng dụng và shim thay thế GetVersionExchức năng, để ứng dụng không gọi GetVersionExtừ kernel32.dllmà chỉ GetVersionExtrong shim. Các chức năng shimmed sau đó thực hiện hành vi của các phiên bản Windows trước. GetVersionExlà một mẫu dễ dàng, mỗi phiên bản Windows trả về số phiên bản của chính nó GetVersionEx, vì vậy khi giả mạo một Windows cũGetVersionExchức năng hiện không trả về số phiên bản Windows 7 mà ví dụ số phiên bản Windows XP. Vì vậy, ứng dụng sẽ tin rằng nó đang chạy trên Windows XP.

Cũng có một số thay đổi khác từ phiên bản Windows sang phiên bản Windows. Trong các phiên bản cũ hơn, ví dụ, nếu một chương trình tải DLL, đường dẫn tìm kiếm của DLL cũng bao gồm thư mục hiện tại. Đây là một vấn đề bảo mật, do đó, các phiên bản Windows mới hơn theo mặc định không tìm kiếm trong thư mục hiện tại. Với shim thích hợp, bạn có thể mô phỏng hành vi cũ.

Vì các miếng chêm chỉ là một lớp giữa ứng dụng và API Windows, nên shim chỉ có thể làm những gì ứng dụng có thể tự làm. Ví dụ, shim không thể được sử dụng để phá vỡ UAC hoặc truy cập các tệp được bảo vệ.

Nếu bạn muốn biết thêm, đây là một số liên kết bạn có thể thấy thú vị:

Đặc biệt Bộ công cụ tương thích ứng dụng Microsoft rất đáng xem. Công cụ này cung cấp cho bạn tổng quan về các ứng dụng có vấn đề đã biết, tất cả các bản sửa lỗi và chế độ tương thích có sẵn và bản sửa lỗi nào được áp dụng cho từng ứng dụng.


1
Bạn đã thỏa mãn thành công sự tò mò của tôi với các ví dụ cụ thể. Cảm ơn bạn!
Kale Muscarella

6

Tôi nghĩ rằng rất nhiều điều khác nhau xảy ra. Một ví dụ đơn giản là một chương trình có thể kiểm tra phiên bản windows của bạn, nhưng bị lẫn lộn bởi giá trị trả về của một hệ điều hành mới. Vì vậy, sử dụng chế độ tương thích sẽ báo cho các cửa sổ báo cáo một phiên bản sai. Raymond Chen đề cập đến một số điều nữa: http://bloss.msdn.com/oldnewthing/archive/2003/12/23/45481.aspx#45590


4

Kiến thức của tôi về Chế độ tương thích là nó khiến một số lệnh gọi hệ thống Windows nói dối với chương trình.

Một ví dụ rõ ràng là các hàm GetVersionExGetVersion báo cáo phiên bản Windows được chỉ định thay vì phiên bản thực.

Đường dẫn tệp kiểu cũ cũng được dịch tự động khi một chương trình ở chế độ Tương thích đề cập đến một tệp trong các thư mục hệ thống nổi tiếng. Ví dụ C:\Documents and Settingsđược dịch sang C:\Users\<user>\Documents khi chạy trên Windows 7 một chương trình ở chế độ tương thích XP.


-5

Bài viết này làm một công việc tốt để giải thích nó.

http://arstechnica.com/inif-t Technology / 2010/01 / windows-xp-mode /

Tuy nhiên, với Windows 7, Redmond đã cung cấp một giải pháp cho vấn đề: Chế độ Windows XP. Chế độ Windows XP sử dụng công nghệ ảo hóa để cho phép các ứng dụng chạy trên bản sao ảo của Windows XP hiển thị trong menu Bắt đầu của Windows 7 và trên màn hình nền Windows 7.


4
Chế độ Windows XP! = Chế độ tương thích
Kevin Mark
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.