Misalkan beberapa penulis telah menerapkan aplikasi Windows-nya menjadi satu instance. Apakah ada cara untuk membuat banyak instance dari aplikasi ini (selain berjalan di dalam mesin virtual atau meminta penulis untuk menulis ulang aplikasi)?
Jika ada alat readymade, saya ingin mengetahuinya. (Saya sudah mencoba sandboxie dan Altiris SVS tanpa hasil).
Jika tidak ada apa-apa di luar sana, saya ingin memprogram alat / hack yang akan membiarkan saya melakukan ini. Saya mencari petunjuk di mana untuk memulai - apa yang akan terlibat, keterampilan apa yang dibutuhkan. Saya memiliki keterampilan pemrograman sedang di C dan Java.
Jika ini tidak dapat dilakukan, tolong jelaskan mengapa.
EDIT: Saya tahu itu ide yang buruk tetapi saya masih perlu melakukannya (karena berbagai alasan). Saya ingin cara umum yang berfungsi untuk aplikasi apa pun dan tidak memperkenalkan kesalahan.
sumber
Jawaban:
Banyak aplikasi memeriksa daftar proses global (dengan EnumProcesses, OpenProcess, GetModuleBaseName, dan fungsi serupa) atau daftar windows (dengan EnumWindows, EnumChildWindows).
Anda dapat mencoba mengatur kait (lihat contoh SetWindowsHookEx, CallNextHookEx, dll) untuk mengaitkan panggilan fungsi API tertentu dari aplikasi itu dan mengganti data yang diminta sebagai tanggapan dengan Anda untuk mengelabui aplikasi.
sumber
Tidak ada cara umum karena aplikasi yang berbeda menggunakan metode yang berbeda. Banyak metode yang melibatkan mencoba mendapatkan beberapa sumber daya seluruh mesin (atau, setidaknya, seluruh pengguna) (misalnya, objek sinkronisasi bernama, file dengan nama dan lokasi terkenal, atau nilai registri). Jika aplikasi berhasil, maka ia menyimpan sumber daya itu selama itu berjalan. Jika gagal karena instance lain sudah memegang sumber daya, maka ia mungkin mencoba memberi sinyal instance asli sehingga dapat merespons.
Di Windows 16-bit, ketika sebuah program dimulai, OS memberikannya pegangan unik yang disebut HINSTANCE. Itu juga akan melewati HINSTANCE dari proses yang sedang berjalan menggunakan executable yang sama (jika ada). Pada masa itu, itu mungkin cara yang paling umum bagi program untuk mengetahui apakah salinannya sudah berjalan. Di Windows 32-bit, dengan memori terproteksi, ruang alamat khusus proses, dan akhir multitasking kooperatif, HINSTANCEs tidak lagi memiliki makna yang sama.
Sejumlah kecil aplikasi melakukan ini hanya untuk "kegunaan", tetapi bagi banyak orang lain, mungkin ada alasan bagus untuk menegakkan lajang. Memotong yang dapat menyebabkan korupsi data atau gagal menjalankannya.
sumber
Anda dapat menjalankan aplikasi pada akun pengguna yang berbeda dan pemeriksaan contoh tidak akan berfungsi lagi.
sumber
Itu mungkin!
Berikut ini adalah gambar saya menjalankan waktu paruh 1 4x dalam 4 jendela semua terhubung ke server LAN yang sama, satu-satunya masalah adalah pengendali tidak terhubung secara independen ke setiap jendela.
Untuk melakukan ini, Anda memerlukan 'Process Explorer' - sebuah program yang memungkinkan Anda untuk melakukan apa yang dikenal sebagai 'Close Handle' pada sub-proses '\ BaseNamedObjects \ ValveHalfLifeLauncherMutex' atau sesuatu. tidak sesulit itu. buka di sini untuk petunjuk terperinci - http://am.half-lifecreations.com/forums/index.php?topic=479.0
Tapi ya itu untuk paruh waktu tetapi dapatkan Process Explorer dan saya yakin Anda akan dapat menemukan yang menangani / proses yang Anda harus tutup untuk mendapatkan program yang Anda inginkan berjalan berkali-kali.
Saya tidak mengerti mengapa windows tidak menerapkan menjalankan game berkali-kali dalam splits / snaps sebagai fitur! ini jelas karena orang tidak akan membeli PC sebanyak ... juga memeriksa SoftXSpand benar-benar hebat, memungkinkan Anda untuk menjalankan beberapa contoh windows sebagai pengguna independen
sumber
File kunci, pipa bernama, dan peristiwa sinkronisasi adalah beberapa cara umum yang digunakan aplikasi untuk memeriksa mereka satu-satunya contoh yang berjalan. Untuk mengatasi file-file kunci Anda harus memvirtualisasi sistem file, menghubungkannya atau menghapus secara waktu (dan mungkin tidak berfungsi jika mengunci file juga terbuka). Bernama pipa dan acara sinkronisasi akan jauh lebih sulit karena Anda tidak memiliki kontrol yang sama dari luar aplikasi yang Anda lakukan dengan file.
sumber
Di Windows 8 dan yang lebih baru, Anda menahan tombol Shift dan mengklik ikon / tombol program pada taskbar. Ini akan meluncurkan executable lagi. Jika aplikasi tidak memeriksa sendiri klon, Anda akan memiliki jendela baru.
Ini tentunya akan berpotensi menimbulkan konflik dengan file internal aplikasi jika terbuka misalnya file internal sqlite, jadi Anda harus benar-benar tahu apa yang Anda lakukan atau tidak peduli jika ada yang rusak.
sumber