Geçtiğimiz ay, Windows’un geriye dönük uyumluluğunun ne kadar geriye gidebildiğini gözler önüne seren eğlenceli bir deneyi sizlerle paylaşmıştık. Şimdiyse buna misal bir deney MattKC isimli bir YouTuber tarafından yapıldı; fakat bu kere çok daha büyük bir ölçekte.
Youtuber, binlerce uygulamayı 28 yıl evvel piyasaya sürülen Windows 95’te kullanılabilir hale getirmek üzere bir teşebbüste bulundu. Temel olarak .NET Framework yardımıyla gerçekleştirilen bu çalışma, aslında deneyin birinci kısmını oluşturuyor. Bilmeyenler için söyleyelim; .NET Windows 98 çıkana kadar piyasaya sürülmemişti ve hasebiyle 95 ile uyumlu değildi. Bu yüzden deneyin birinci büyük kısmı .NET’i Windows 95 ile çalışacak biçimde düzenlemek oldu.
Ne yazık ki Windows 98’de çağdaş uygulamaları çalıştırmaya yarayan açık kaynaklı bir uyumluluk katmanı olan KernelEx bu mevzuda pek yardımcı olmadı. Hatta bir damping aracı kullanarak gerekli tüm DLL’leri taşıdıktan sonra bile .NET çalışmadı.
Youtuber, biraz daha araştırdıktan sonra “ndphlpr” isimli eski bir Windows şoförünün sorunun kaynağı olduğunu, çünkü bu şoförün .NET için gerekli bir bileşen olduğunu ve Windows 98’de artık kullanılmıyor üzere görünmesine karşın çökmesine neden olduğunu buldu. Ayrıyeten bu sürücüyü atlatmanın da görünürde bir yolu yoktu.
Bu noktada YouTuber, .NET Framework ile ilgili sorunu “ayıklamaya” yardımcı olması için WinDbg
Burada bahsettiğimiz süreç kulağa çok kolay bir çözümmüş üzere gelse de WinDbg o periyotta mevcut olmadığından birtakım uyumluluk sıkıntılarının aşılması güç bir işti. Kod çözme süreci, sorunun user32.dll kütüphanesinde “NotifyWinEvent” belgesinin olmamasından kaynaklandığını ortaya çıkardı ve bu durum SSE2’nin kod içindeki bir talimatı gizlemesiyle daha da karmaşık hale geldi. Tüm bunlara karşın MattKC, SSE2’yi yamalamayı denese de sorun tekrar de çözülmedi.
Son olarak, YouTuber kusur bildirilerini görünür bir pencerede görüntülemek için manuel olarak bir prosedür hazırladı ve kalan tüm DLL uyumluluk meselelerini çözebildi. Israrının karşılığını alan YouTuber, eski kodların bilinmeyen sırlarını ortaya çıkardı ve onlarca yıllık sistemlerin bile sonlarının ötesine geçilebileceğini kanıtladı.