Nasıl yok Uyumluluk Modu Windows dahili olarak çalışır?
Nasıl yok Uyumluluk Modu Windows dahili olarak çalışır?
Yanıtlar:
Uyumluluk modu, sözde şimler kullanılarak elde edilir. TechNet'te bunların nasıl çalıştığını açıklayan iyi bir makale var .
Windows uygulama dosyaları, uygulama yükleyicisine uygulamanın hangi DLL'leri gerektirdiğini ve bunlardan hangi işlevleri kullandığını söyleyen bir içe aktarma tablosu içerir. Örneğin referans için bir işlem kudreti GetVersionEx
içinde kernel32.dll
. Bir program uyumluluk modunda çalışacak eder, sonra kıskı uygulama ve kama yerine geçer arasına yerleştirildikten GetVersionEx
uygulama çağrı değildir, böylece, işlev GetVersionEx
gelen kernel32.dll
ancak GetVersionEx
pabucun içinde. Shimmed fonksiyonlar daha sonra önceki Windows versiyonlarının davranışını uygular. GetVersionEx
kolay bir örnek, her Windows sürümü kendi sürüm numaralarını döndürür GetVersionEx
.GetVersionEx
işlev şimdi Windows 7 sürüm numaralarını döndürmez, örneğin Windows XP sürüm numaralarını döndürür. Yani uygulama Windows XP'de çalıştığına inanacaktır.
Ayrıca, Windows sürümünden Windows sürümüne bazı başka değişiklikler de yapılmıştır. Örneğin, eski sürümlerde, bir program bir DLL yüklediyse, DLL'nin arama yolu da geçerli dizini içeriyordu. Bu bir güvenlik sorunudur, bu nedenle Windows'un yeni sürümleri varsayılan olarak geçerli dizinde arama yapmaz. Uygun şim ile eski davranışları simüle edebilirsiniz.
Şimler, uygulama ile Windows API arasında yalnızca bir katman olduğundan, bir şim uygulamanın kendisinin yapabileceğini yapabilir. Altlık, örneğin UAC'yi atlamak veya korunan dosyalara erişmek için kullanılamaz.
Daha fazla bilgi edinmek istiyorsanız, işte ilginç bulabileceğiniz bazı bağlantılar:
Özellikle Microsoft Uygulama Uyumluluğu Araç Seti bir göz atmaya değer. Bu araç, bilinen sorunlara sahip uygulamalar, mevcut tüm uyumluluk düzeltmeleri ve modları ve her bir uygulamaya hangi düzeltmelerin uygulandığı ile ilgili genel bir bakış sunar.
Bence pek çok farklı şey oluyor. Basit bir örnek, bir programın Windows sürümünüzü kontrol edebileceği, ancak yeni bir işletim sisteminin dönüş değeri ile karıştırıldığıdır. Bu yüzden uyumluluk modunu kullanmak, pencerelerin yanlış bir sürüm bildirmesini söyler. Raymond Chen daha fazla şeyden bahseder: http://blogs.msdn.com/oldnewthing/archive/2003/12/23/45481.aspx#45590
Uyumluluk Modu bilgim, birkaç Windows sistem çağrısının programa yalan söylemesine neden olmasıdır.
Açık bir örnek , belirtilen yerine Windows sürümü bildiren GetVersionEx ve GetVersion işlevleridir .
Eski stil dosya yolları, Uyumluluk modundaki bir program iyi bilinen sistem klasörlerinde bir dosyaya başvurduğunda da otomatik olarak çevrilir. Örneğin
, Windows 7'de çalışırken, XP uyumluluk modunda bir programa C:\Documents and Settings
çevrilir C:\Users\<user>\Documents
.
Bu makale açıklamak için iyi bir iş çıkarır.
http://arstechnica.com/information-technology/2010/01/windows-xp-mode/
Bununla birlikte, Windows 7 ile Redmond, bu soruna bir çözüm getirmiştir: Windows XP Mode. Windows XP Mode, sanallaştırılmış bir Windows XP kopyası üzerinde çalışan uygulamaların Windows 7 Başlat menüsünde ve Windows 7 masaüstünde görünmesini sağlamak için sanallaştırma teknolojisini kullanır.