Silinemeyen Ulead Photoimpact (UFO) İmaj Dosyaları

PhotoImpact yazılımını kullananlar belki karşılaşmıştır bu durum ile. PhotoImpact yazılımının varsayılan olarak tuttuğu UFO formatını (Hemen hemen Photoshop’daki PSD dosyalarına denk düşüyor) silmeye çalıştığınızda sonsuza kadar bekleyeceğiniz şu ekranla karşı karşıya kalıyorsunuz.

Silinmeye hazırlıyor ama o an bir türlü gelmiyor. Ve bir süre sonra Explorer.exe yanıt vermeyi kesebiliyor. Photoimpact yazılımını o kadar kullanmama rağmen bunu ancak yeni bir UFO dosyasını silmeye kalktığımda anladım. Bu duruma bir çözüm üretmek için olayı araştırdım.

Öncelikle silmeye çalışırken explorer.exe’nin çökmesi, sorunun kaynağının PhotoImpact’in bazı servisleri için register ettiği bir shell extension’ından kaynaklandığını düşündürdü. İlk iş olarak Procmon uygulaması ile şöyle bir göz gezdirdim. Hangi modüller yüklenmiş görmek için. Baktığımda bir dizi PhotoImpact yazılımına ait modülün yüklü olduğunu gördüm.

Resimde yüklü modülleri görüyorsunuz.

Daha sonra Process Explorer ile hangi modülün bu soruna yol açtığını anlamaya geldi. Explorer.exe’ye ait Thread’leri (İş Parçacığı) inceledikten sonra bir thread’in uzun müddet wait state’de beklediğini gördüm. Yalnız esas sorun olan thread’in sadece wait state’de beklemesinden ziyade wait reason’ın executive olarak görülmesi. Bu demek oluyor ki thread kernel modda executive componentlerden birini beklemekle meşgul ki (20 farklı wait reason’dan 0-7 arası executive olduğunu belirtir ve değeri ile tam olarak neyi beklemekte olduğunu Perfmon gibi araçlarla tespit edebiliriz) bu da bizim uzun süreli olarak istediğimiz birşey değil.

Terslik seçili thread’imizde görünüyor. Neler olup bittiğini anlamak için thread’in callstack çıktısına göz atmamız faydalı olacaktır. O yüzden Stack butonuna tıklıyoruz.

Thread’e ait callstack’ı görüyoruz. Bu thread içinde bir COM nesnesi yüklemeye çalışıyor. Ve callstack’den gördüğümüz kadarı ile bu UPIExtractImage.dll. Yukarıda listelediğimiz modülleri hatırlarsanız UPIExtracImage.dll modülünün PhotoImpact yazılımına ait olduğunu göstermiştim.  Bu demek oluyor ki doğru yoldayız. OleView aracı ile ilgili modülü incelediğimizde amacının UFO dosyasından bir thumbnail generate etmeye çalışan bir COM nesnesi olduğunu görüyoruz.

Peki bunu dosyayı silmeye çalışırken neden yapmak isteyebilir. Cevabı biraz düşününce bulabiliyorsunuz. Mesele de şu ki Windows Shell dosya silineceği zaman eğer formatın desteği varsa dosya silme onay penceresinin solunda o dosyaya ait bir thumbnail yani küçük bir önizleme gösterir. Örneğin;

gibi. PhotoImpact de böyle bir atraksiyon yapmak istemiş ancak pek başarılı olamıyor. İlgili modülün işletim sistemi ile uyumsuzluğundan veya bug içermesinden kaynaklı olabilir.  Bu kadar araştırmadan sonra problem nasıl çözülebilir. Basit olarak ilgili COM nesnesini sistemden unregister edersek problemin çözülmesi gerek. Böylece shell silme sırasında register edilmiş bu componeneti yüklemeye çalışmayacak ve bu kısmı es geçecek. Hemen bir adet Administrator haklarıyla Command Prompt (Komut İstemcisi) açıyoruz. Aktif dizini PhotoImpact yazılımının kurulu olduğu dizine getiriyoruz. Benim kullandığım yazılımda bu dizin “C:\Program Files\Ulead Systems\Ulead PhotoImpact 10 ESD”. Aktif dizini “CD [DIZIN]” komutu ile değiştirdikten sonra şu komutla ilgili modülü devredışı bırakıyoruz.

regsvr32 /u UPIExtractImage.dll

onayladıktan sonra şöyle bir bilgi ekranı almanız gerek.

Bu bilgiyi aldıysak modül başarıyla kaldırılmıştır. Eğer hata alıyorsanız konsolu Administrator (Yönetici) hakları ile çalıştırdığınızdan emin olun. Bu işlemden sonra UFO dosyasını silmeyi deneyebiliriz.

UFO dosyasını çöp kutusunda görmek güzel :)

Leave a Reply

Your email address will not be published.