Bagaimana Mode Kompatibilitas di Windows bekerja secara internal?
Bagaimana Mode Kompatibilitas di Windows bekerja secara internal?
Jawaban:
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 GetVersionEx
dalam kernel32.dll
. Ketika suatu program akan berjalan dalam mode kompatibilitas, maka shim diletakkan di antara aplikasi dan shim menggantikan GetVersionEx
fungsi, sehingga aplikasi tidak memanggil GetVersionEx
dari kernel32.dll
tetapi GetVersionEx
dalam shim. Fungsi shimmed kemudian menerapkan perilaku versi Windows sebelumnya. GetVersionEx
adalah contoh yang mudah, setiap versi Windows mengembalikan nomor versinya sendiri GetVersionEx
, jadi ketika memalsukan Windows lamaGetVersionEx
berfungsi 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.
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
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 Settings
diterjemahkan C:\Users\<user>\Documents
ketika menjalankan pada Windows 7 program dalam mode kompatibilitas XP.
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.