3.02.2012

Flash'ın yeni sürümlerindeki güncelleme düzeni

Bazen FlashPlayer'ın güncellenme penceresi çıkar karşıma. Çok dikkat etmem, muhtemelen bilgisayarı yeni başlattığımda görünür.


Ama o pencere nasıl açılır, günlük mü, haftalık mı, aylık mı, bilmiyorum. Bir gün yine açıldığında bekletip Process Explorer'ı açtım. Bir penceredan ilgili prosesi bulan butona basarak bunu Flash'ın update penceresinin üzerine sürükledim.


Nihayetinde Flash Update'in prosesi ortaya çıktı: %systemroot%\system32\Macromed\Flash klasörünün altındaki FlashUtil11c_Plugin.exe dosyası. Process Explorer'da bu prosesi çift tıklayarak komut satırından nasıl başlatıldığını görmek istedim. Nihayetinde aşağıdaki pencerede görüleceği gibi -update plugin argümanlarıyla çağrıldığını gördüm.


Peki bu proses durup dururken nasıl oluyor da çalışıyor? Muhtemelen registry'de bir giriş vardır diye düşünüp registry'yi aradım, ama hiçbir ilgili giriş bulamadım. Bu garip işte. Biraz uğraşmam gerekecek.

Avı için pusuya yatan avcı misali, uzun bir gözlem sürecine girdim. Bu sefer de Process Monitor'ü açtım. Sadece registry olaylarını takip etmek istiyorum. Bu sebeple önce araç çubuğundaki sadece registry butonunun basılı kalmasını sağladım.


Daha sonra Ctrl+L'ye basarak yakalanacak olayların arasından sadece registry yolunda flash geçen olayları süzmek amacıyla aşağıdaki girişi yapıp "Add" butonuna bastım.


Bir de Filter menüsünden "Drop Filtered Events"i işaretledim, çünkü uzun süre Process Monitor'ü açık tutmak milyonlarca gereksiz olayı yakalayacak, ve bunlar da sanal bellekte depolanacağından (eğer File menüsünden Backing Files ile bunu değiştirmediysek) bir süre sonra yetersiz sanal bellek hataları ile karşılaşacağız.


Bu işi birkaç gün tekrarladım. Sonunda oltama birşey takıldı. FlashUtil11c_Plugin.exe'in çalışmasını sağlayan [HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce\] anahtarının altındaki FlashPlayerUpdate girişiymiş.


 Bu giriş,yukarıda bahsettiğim gibi daha önce yoktu. Buraya bunu kim yazıyor? Bunu bulmak için yukarıdaki süreci bir daha, fakat bu sefer filtre olarak yine path'e flash yerine runonce yazarak tekrarladım. Aynı şekilde "Drop Filtered Events" seçili olmalı.

Bu da birkaç gün sürdü. Sonunda katlili buldum: plugin-container.exe!



plugin-container.exe, firefox'un. Plugin'lerinin firefox.exe prosesinden bağımsız olarak çalışması için geliştirilmiş bir yöntem. Bu sayede Flash gibi plugin'lerde bir sorun olduğunda sadece plugin sonlanıyor, asıl sekme veya firefox prosesine birşey olmuyor. Eskiden böyle olmuyordu, flash sebebiyle bütün firefox çöküyordu, herkes sebebinin firefox olduğunu düşünüyor, "firefox çok çöküyor" şeklinde bir yanılgı oluşuyordu.

Flash'ın güncellenme işini bir browser bileşenine bırakması garip gibi görünse de aslında olay şöyle oluyor; sistemdeki flash sürümü her tarayıcı için farklı olabiliyor. Örneğin benim sistemimdeki durum şöyle (Denetim Masasındaki flash appleti)

Buradaki ActiveX sürümü Internet Explorer'ın kullandığı Flash'ın sürümü, Plug-in sürümü ise Firefox'un kullandığı Flash sürümü. Çıkan sonuç şudur ki, Flash sadece kullandığınız tarayıcı için, ve kullandığınız sürece güncelleniyor. Firefox kullanıyorsanız bu iş bu şekilde. Internet Explorer'ımın sürümünün eski olmasının sebebi de onu daha seyrek kullanıyor olmam. Google Chrom ise kim bilir bu işi nasıl yapıyor.

Hiç yorum yok: