Microsoft, Windows 11’ 64 bit sistem dosyalarının System32, 32 bit dosyaların ise SysWOW64 klasöründe bulunmasının nedenini eski yazılımlarla uyumluluğu koruma yaklaşımıyla açıklıyor. Windows’un 64 bit sürümleri, geçmişten kalan uygulamaların çalışmasını sürdürmek için WOW64 adlı uyumluluk katmanını kullanıyor. Dosya sistemi yönlendirmesi sayesinde 32 bit uygulamalar System32 yolunu çağırdığında Windows, isteği arka planda SysWOW64 klasöründeki karşılık gelen dosyalara yönlendirebiliyor.

System32 Klasörünün Adı Neden 64 Bit Dosyaları İçeriyor?

Windows’un sistem klasörlerindeki isimlendirme, 64 bit mimariden çok daha eski döneme dayanıyor. Microsoft, 16 bit Windows sürümlerinde sistem dosyalarını C:\Windows\System dizininde tutarken 32 bit Windows birlikte C:\Windows\System32 klasörünü kullanmaya başladı. Dolayısıyla klasördeki “32” ifadesi, başlangıçta 32 bit sistem dosyalarını belirtmek için seçilmişti.

64 bit Windows geliştirildiğinde Microsoft, eski uygulamaların dosya yollarını korumak zorunda kaldı. Pek çok yazılım, sistem klasörünü dinamik olarak öğrenmek yerine System32 yolunu doğrudan kod içinde kullanıyordu. Microsoft’un deneyimli geliştiricilerinden Raymond Chen’in açıkladığı üzere, 64 bit mimariye uyarlanan programların aynı yolu kullanması bekleniyordu. Microsoft, nedenle System32 klasörünü işletim sisteminin yerel mimarisine uygun dosyalar için ayırdı.

Bugünkü 64 bit Windows sürümlerinde System32 klasöründe 64 bit sistem dosyaları bulunurken 32 bit karşılıkları SysWOW64 dizininde tutuluyor. Örneğin kernel32.dll dosyası iki klasörde yer alabiliyor ancak her kopya farklı işlemci mimarisi için derlendiğinden dosya boyutları farklı olabiliyor.

Microsoft’un WOW64 olarak adlandırdığı uyumluluk katmanı, 32 bit uygulamaların 64 bit Windows üzerinde çalışmasını sağlıyor. İsim, “Windows 32-bit on Windows 64-bit” ifadesinden geliyor. SysWOW64 klasöründeki “64” ifadesi ise klasördeki dosyaların 64 bit olduğu anlamına gelmiyor; isim, 64 bit Windows üzerindeki uyumluluk sistemine gönderme yapıyor.

Dosya sistemi yönlendiricisi, 32 bit uygulama C:\Windows\System32 yolundaki dosyaya erişmek istediğinde isteği uygun SysWOW64 konumuna aktarabiliyor. Böylece 32 bit süreç, 64 bit DLL yüklemeye çalışmıyor. Çünkü Windows, 32 bit sürecin 64 bit DLL’yi doğrudan çalıştırmasına izin vermiyor; aynı kısıtlama ters yönde geçerli.

Yönlendirme, uygulamanın çoğu durumda fark etmediği işlem olarak arka planda gerçekleşiyor. Örneğin 32 bit Komut İstemi üzerinden C:\Windows\System32\kernel32.dll sorgulandığında sistem, isteği SysWOW64 içindeki dosyaya yönlendirebiliyor. 64 bit Komut İstemi ise aynı yolu kullandığında System32 klasöründeki 64 bit sürüme erişiyor.

WOW64 yalnızca sistem dosyalarının yollarını düzenlemekle kalmıyor, 32 bit uygulamalar için kayıt defterinde ayrı görünüm sunuyor. Bazı kayıt defteri erişimleri HKEY_LOCAL_MACHINE\Software\Wow6432Node altındaki 32 bit görünüme yönlendiriliyor. Windows ayrıca 32 bit uygulamalara yönelik Program Files (x86) dizinini kullanarak 32 bit yazılımların dosyalarını 64 bit uygulamalardan ayırıyor.

Microsoft’un uyumluluk mekanizmasında bazı istisnalar bulunuyor. System32\catroot, catroot2, driverstore, drivers\etc, logfiles spool klasörleri dosya sistemi yönlendirmesinden muaf tutuluyor. dizinlerde ılan sistem verileri bulunduğundan 32 bit 64 bit uygulamaların aynı konumlara erişmesi gerekebiliyor; ancak Microsoft, söz konusu istisnaların her biri için ayrıntılı gerekçe sunmuyor.

Microsoft, dosya yönlendirmesini aşarak gerçek System32 dizinine erişmek isteyen 32 bit uygulamalar için Sysnative adlı sanal yol sağlıyor. Sysnative, Windows klasöründe fiziksel olarak bulunan sıradan dizin değil; yalnızca desteklenen 32 bit süreçlerin kullanabildiği özel takma ad niteliği taşıyor. nedenle 64 bit Dosya Gezgini üzerinden C:\Windows\Sysnative yolunu açmak başarısız olabilirken 32 bit uygulama yolu kullanarak gerçek System32 dosyalarına erişebiliyor.

Geliştiriciler, WOW64 dosya yönlendirmesini Wow64DisableWow64FsRedirection işleviyle devre dışı bırakabiliyor. Ancak Microsoft, yöntemin ilgili iş parçacığındaki dosya işlemlerini etkileyebileceği DLL yükleme hatalarına neden olabileceği konusunda uyarıyor. nedenle uygulamaların mimariye uygun dosya yollarını kullanması, uyumluluk sorunlarını azaltmak açısından önem taşıyor.

Windows’un Arm tabanlı bilgisayarlardaki uyumluluk yapısı, x86 sistemlerinden farklı geçmişe sahip. Önceki Arm64 sürümlerinde 32 bit x86 uygulamalar SysWOW64 üzerinden çalışırken 32 bit Arm uygulamaları SysArm32 adlı ayrı klasöre yönlendiriliyordu. Microsoft’un güncel geliştirici belgeleri, Arm bilgisayarlarda 32 bit Arm uygulamalarına yönelik desteğin sona erdiğini SysArm32 içindeki sistem ikililerinin kaldırıldığını belirtiyor.

Buna karşılık x86 tabanlı 32 bit 64 bit uygulamalar, desteklenen Windows on Arm sistemlerinde Prism emülasyonu üzerinden çalışmayı sürdürüyor. Microsoft, Prism’e AVX AVX2 desteğini ekleyerek uyumlu uygulamaların daha geniş işlem kümesinden yararlanmasını sağladı.

System32 adının korunması, Windows’un geçmiş yazılımlarla uyumluluğu sürdürmek için tercih ettiği yaklaşımın somut örneklerinden biri olarak öne çıkıyor. Microsoft, klasör adını değiştirerek eski uygulamaları bozmak yerine yönlendirme, sanal yollar istisnalar üzerinden mevcut yapıyı koruyor. tercih, Windows ekosistemindeki eski yazılımların çalışmasını sürdürmesine yardımcı olurken sistem klasörlerinin isimlerini ilk kez gören kullanıcılar için kafa karıştırıcı durum yaratmaya devam ediyor.