Bagaimana "Mode Kompatibilitas" di Windows berfungsi?


Jawaban:


31

Mode kompatibilitas dicapai dengan menggunakan apa yang disebut shims. Ada artikel bagus di TechNet yang menjelaskan cara kerjanya.

File aplikasi Windows berisi tabel impor yang memberi tahu pemuat aplikasi mana DLL yang dibutuhkan aplikasi dan fungsi mana yang digunakannya. Suatu proses mungkin sebagai contoh referensi GetVersionExdalam kernel32.dll. Ketika suatu program akan berjalan dalam mode kompatibilitas, maka shim diletakkan di antara aplikasi dan shim menggantikan GetVersionExfungsi, sehingga aplikasi tidak memanggil GetVersionExdari kernel32.dlltetapi GetVersionExdalam shim. Fungsi shimmed kemudian menerapkan perilaku versi Windows sebelumnya. GetVersionExadalah contoh yang mudah, setiap versi Windows mengembalikan nomor versinya sendiri GetVersionEx, jadi ketika memalsukan Windows lamaGetVersionExberfungsi sekarang tidak mengembalikan nomor versi Windows 7 tetapi misalnya nomor versi Windows XP. Jadi aplikasi akan percaya itu berjalan pada Windows XP.

Ada juga beberapa perubahan lain dari versi Windows ke versi Windows. Dalam versi yang lebih lama misalnya, jika suatu program memuat DLL, jalur pencarian untuk DLL juga termasuk direktori saat ini. Ini adalah masalah keamanan, jadi versi Windows yang lebih baru secara default tidak mencari di direktori saat ini. Dengan shim yang tepat Anda dapat mensimulasikan perilaku lama.

Karena shims hanyalah lapisan antara aplikasi dan Windows API, shim dapat melakukan apa yang bisa dilakukan oleh aplikasi itu sendiri. Shim tidak dapat digunakan misalnya untuk menghindari UAC atau mengakses file yang dilindungi.

Jika Anda ingin tahu lebih banyak, berikut beberapa tautan yang mungkin menarik bagi Anda:

Terutama Perangkat Kompatibilitas Aplikasi Microsoft yang patut dilihat. Alat ini memberi Anda tinjauan umum atas aplikasi dengan masalah yang diketahui, semua perbaikan dan mode kompatibilitas yang tersedia dan perbaikan mana yang diterapkan untuk setiap aplikasi.


1
Anda telah berhasil memuaskan keingintahuan saya dengan contoh nyata. Terima kasih!
Kale Muscarella

6

Saya pikir banyak hal berbeda terjadi. Contoh langsungnya adalah bahwa suatu program mungkin memeriksa versi windows Anda, tetapi menjadi bingung oleh nilai pengembalian sistem operasi baru. Jadi menggunakan mode kompatibilitas akan memberitahu windows untuk melaporkan versi yang salah. Raymond Chen menyebutkan beberapa hal lagi: http://blogs.msdn.com/oldnewthing/archive/2003/12/23/45481.aspx#45590


4

Pengetahuan saya tentang Mode Kompatibilitas adalah bahwa hal itu menyebabkan beberapa panggilan sistem Windows berbohong kepada program.

Salah satu contoh yang jelas adalah fungsi GetVersionEx dan GetVersion yang melaporkan versi Windows yang ditentukan dan bukan yang asli.

Jalur file gaya lama juga diterjemahkan secara otomatis ketika sebuah program dalam mode Kompatibilitas merujuk ke file dalam folder sistem yang terkenal. Misalnya C:\Documents and Settingsditerjemahkan C:\Users\<user>\Documents ketika menjalankan pada Windows 7 program dalam mode kompatibilitas XP.


-5

Artikel ini melakukan pekerjaan yang baik untuk menjelaskannya.

http://arstechnica.com/information-technology/2010/01/windows-xp-mode/

Namun, dengan Windows 7, Redmond telah memberikan solusi untuk masalah ini: Mode Windows XP. Mode Windows XP menggunakan teknologi virtualisasi untuk memungkinkan aplikasi yang berjalan pada salinan Windows XP tervirtualisasi muncul di menu Start Windows 7 dan pada desktop Windows 7.


4
Mode Windows XP! = Mode Kompatibilitas
Kevin Mark
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.