Menjalankan penampil gambar dari Windows XP pada Windows modern

Saya memiliki direktori dengan gambar-gambar lama yang saya kumpulkan di noughties. Saya memindahkannya dengan semua file saya yang lain dari satu komputer ke komputer lain pada setiap peningkatan. Sesekali, ketika saya merasa sedikit nostalgia, saya membukanya dan melihat-lihat gambar. Ada beberapa file GIF dengan animasi, dan setiap kali saya perhatikan bahwa penampil gambar default dari Windows 7 tidak mendukungnya. Saya ingat, bahwa penampil gambar dari Windows XP dapat memainkan animasi GIF dengan benar. Jadi, saya menghabiskan sedikit waktu untuk mengatasi beberapa kendala dan menjalankan penampil gambar lama di Windows modern, peluncur kecil diciptakan untuk tujuan ini. Sekarang saya dapat menonton gambar-gambar lama ini dalam antarmuka autentik dari penampil gambar lama dari Windows XP.


Unduh: shimgvw_xp32.7z (termasuk kode sumber dan biner dari peluncur, dan shimgvw.dll dari Bahasa Inggris Windows XP SP3).

Bagaimana itu dilakukan?


Penampil gambar default dari Windows XP bukan hanya sebuah aplikasi. Ini dijalankan oleh Windows Explorer dari pustaka dinamis shlimgvw.dll. Tidak mungkin untuk menjalankannya secara langsung, Anda memerlukan mediator seperti rundll32 untuk tujuan ini (diperlukan jalur ke file gambar yang ada):

rundll32 c:\windows\system32\shimgvw.dll,ImageView_Fullscreen c:\test.gif 

Tetapi trik ini tidak berfungsi ketika Anda mencoba menjalankan shimgvw.dll dari Windows XP pada Windows 7, shimgvw.dll memerlukan mode kompatibilitas Windows XP diaktifkan. Dimungkinkan untuk melakukannya dengan mengatur mode kompatibilitas ini untuk salinan rundll32, tetapi ini adalah peretasan yang buruk, dan itu akan menyebabkan menampilkan dialog UAC pada setiap jalannya penampil, sehingga tidak tepat.

Setelah sesi debug singkat, saya menemukan pelakunya. Shimgvw.dll secara implisit mengimpor beberapa fungsi shell yang sudah tidak digunakan lagi dari shunimpl.dll, dan pustaka yang terakhir menolak untuk memuat jika tidak ada ATOM "FailObsoleteShellAPIs" (jika tidak dimuat dengan benar, tetapi fungsi yang usang mengembalikan kode kesalahan). Mode kompatibilitas Windows XP menambahkan ATOM ini (selain banyak hal lainnya), itulah sebabnya penampil gambar dapat berjalan dalam mode ini.

Pemuat ringan untuk shimgvw.dll telah diterapkan. Ia menambahkan ATOM "FailObsoleteShellAPIs", menanyakan gambar mana yang harus dibuka (jika tidak dilewati sebagai argumen), dan kemudian meneruskan eksekusi ke shimgvw.dll. Penampil berfungsi dengan baik, jadi saya belum menyelidiki apa fungsi shell usang digunakan untuk. Setidaknya, itu bukan sesuatu yang krusial.

Source: https://habr.com/ru/post/id437436/


All Articles