Windows Server 2012 R2 tarih formatının uygulamalar için “d.M.yyyy” olması
Windows Server 2012 öncesi işletim sistemlerini Server 2012 versiyonuna migration sırasında başınıza gelmesi olası bir sorundur. Eğer uygulamalarınız içerisinde tarih/saat formatında değişimler yapıyorsanız (ilk 4 karakteri say araya nokta koy gibi) Server 2012 sizler için bir kabus olacaktır.
Her ne kadar Regional kısmından zaman ayarlarını değiştirebiliyor olsanız bile uygulamalar için bu ayar çalışmayacaktır. Ne kadar uğraşırsanız uğraşın, değişmediğini gördükçe daha da Microsoft’a kızacaksınız.
Bunun için bir örnek;
Server 2012 öncesi işletim sistemlerinde yani IIS7.5 için aşağıdaki gibi çalışan bir kod;
Default Time : 11.07.2016 13:43:33
Local Time : 11.07.2016 13:43:33
Short Date : 11.07.2016
Culture : tr-TR
Server 2012 sonrasında bu şekle dönüşecek;
Default Time : 11.7.2016 13:43:33
Local Time : 11.7.2016 13:43:33
Short Date : 11.7.2016
Culture : tr-TR
Dikkat ederseniz MM kodunuz birden M şekline dönüştü. Bir çözüm var diye düşünüp hemen Regional kısmından MM dönüştürebilirsiniz.
Ancak bazı basit kodlarda işe yarasada, IIS uygulaması tarafından yürütülen bu işlemler çalışmayacaktır. Peki neden? Çünkü arayüzden yapılan değişiklikler, mevcut logon olan profil ayarlarına işler yani Current User. IIS ise kendine özel accountlar üzerinden çalışır; Network Service, IUSR , Local Service,..
Burada yapılması gereken IIS hangi kullanıcıyı bu işlemde devreye aldıysa onun Registry ayarları üzerinde SID numarasını bulup ilgili dizini değiştirmektir. Ne yalan söyliyim ben ilgili SID bulamadım bu sebeple tüm SID kayıtlarındaki ayarları aşağıdaki gibi güncelledim. Sonuçta tüm profillere uygulamış olmak herhangi bir soruna neden olmadı aksine sorunumu çözdü.
İlgili dizinler ; HKEY_USERS\S-XXXX\Control Panel\International\sShortDate ve sLongDate
Bu dizinde bir çok SID görebilirsiniz, bazılarını aşağıdaki ProfileList\S-1-xxxx\ProfileImagePath üzerinden kontrol edip, gereksizlerle uğraşmanıza gerek kalmayabilir. Örneğin bende hh gibi lokal bir kullanıcı için aynı işlemleri yapmam gerekmiyor.
Güzel yanı sunucuyu restart etmeniz gerekmiyor, sadece IIS restart etmeniz yeterli olacaktır. Sorunun düzeldiğini göreceksiniz.