Saya memiliki executable yang berfungsi dengan baik ketika dijalankan pada windows 32-bit tetapi rusak ketika dijalankan pada windows 64-bit.
Apakah ada cara saya bisa memaksanya untuk berjalan dalam mode 32-bit pada mesin 64-bit?
Saya tidak memiliki akses ke kode sumber.
Jawaban:
Seberapa teknis jawaban yang Anda inginkan? Anda mungkin dapat memaksa exe untuk selalu menjalankan 32bit dengan beberapa alat SDK, tetapi itu memang membutuhkan sedikit kerja.
Jawaban mudahnya adalah memulai dari proses 32bit (mis. Gunakan
%SystemRoot%\SYSWOW64\cmd.exe
untuk meluncurkan).Yang lebih kompleks adalah memeriksa jenis exe apa itu, kemudian memodifikasinya sendiri. Latar belakang di sini adalah untuk memahami bahwa kode yang dikompilasi dari bahasa yang langsung bekerja dengan Windows API dibuat sebagai 32bit atau 64bit pada waktu kompilasi oleh pengembang. Ini tidak dapat diubah tanpa kembali ke kode sumber.
Namun semakin banyak aplikasi yang ditulis melalui lapisan virtualisasi yang membuat penulisan aplikasi lebih mudah. Ada dua yang umum: .NET dan Java. Saya tidak yakin tentang Java kecuali mengetahui bahwa memaksa instalasi runtime Java yang tepat dengan menyelesaikan masalah.
Untuk .NET Anda dapat menggunakan alat SDK untuk:
corflags myExe.exe
. Menggunakan utilitas dari .NET SDK untuk membaca tajuk rakitan .NET, untuk exe akan mengembalikan sesuatu seperti:yang
32BITREQ
memberitahu saya ini adalahAnyCPU
karena 32bit tidak diperlukan.corflags
dengan/32BITREQ+
opsi untuk memodifikasi exe menjadi 32bit saja.sumber
%SystemRoot%\SYSWOW64\cmd.exe
dan gagal dengan cara yang sama - menampilkan pesan kesalahan - dan ketika saya memeriksa TaskManager, proses exe saya tidak muncul sebagai proses 32-bitSYSWOW64\cmd.exe
masih menyebabkannya dijalankan sebagai proses 64-bit (saya baru mencobanya).Jika Anda memiliki windows 7 profesional (atau lebih tinggi), maka gunakan mode XP virtual dari Microsoft
ini mengemulasi (?) lingkungan 32 bit, dan telah terbukti berguna untuk menjalankan beberapa program 16 bit lama
sumber
Mencoba segalanya dan tidak ada yang berhasil. tetapi kemudian berpikir tentang memindahkan direktori gta iv dari file C / program (x86) ke file C / program dan berfungsi karena x86 adalah untuk aplikasi 32bit (saya pikir) tetapi tetap bekerja.
sumber
Sebenarnya ada cara yang lebih mudah untuk mengakomodasi ini (bukan solusi jangka panjang).
Jatuhkan aplikasi "corflags.exe" ke folder \ windows \ system32. Buka baris perintah sebagai administrator dan ketik ...
corflags "jalur dan nama exe" / 32BITPREF32 +
Ini akan memaksa aplikasi untuk berjalan sebagai proses 32-bit, bukan 64-bit.
sumber