32-bit pencerelerde çalıştırıldığında iyi çalışan, ancak 64-bit pencerelerde çalıştırıldığında çalışan bir yürütülebilir dosya var.
Bir 64 bit makinede 32 bit modunda çalışmaya zorlamanın bir yolu var mı?
Kaynak koda erişimim yok.
32-bit pencerelerde çalıştırıldığında iyi çalışan, ancak 64-bit pencerelerde çalıştırıldığında çalışan bir yürütülebilir dosya var.
Bir 64 bit makinede 32 bit modunda çalışmaya zorlamanın bir yolu var mı?
Kaynak koda erişimim yok.
Yanıtlar:
Ne kadar teknik bir cevap istiyorsunuz? Muhtemelen exe'yi birkaç SDK aracıyla her zaman 32bit çalıştırmaya zorlayabilirsiniz, ancak biraz çalışma gerektirir.
Kolay cevap, 32 bitlik bir süreçten başlatmaktır (örneğin %SystemRoot%\SYSWOW64\cmd.exe
, başlatmak için kullanın ).
Daha karmaşık olan ne tür bir exe olduğunu kontrol etmek, sonra kendiniz değiştirmek. Buradaki arka plan, Windows API'leriyle doğrudan çalışan dillerden derlenmiş kodun, geliştirici tarafından derleme zamanında 32bit veya 64bit olarak oluşturulduğunu anlamaktır. Bu daha sonra kaynak koduna geri dönülmeden değiştirilemez.
Ancak, uygulamalar giderek daha fazla yazmayı kolaylaştıran bir sanallaştırma katmanı aracılığıyla yazılmaktadır. İki yaygın olan vardır: .NET ve Java. Java hakkında emin değilim, doğru Java çalışma zamanı yüklemesini zorlayarak sorunu çözmeyi bilmek.
.NET için SDK araçlarını kullanarak şunları yapabilirsiniz:
corflags myExe.exe
. Bir exe için bir .NET derleme üstbilgilerini okumak için .NET SDK bir yardımcı programı kullanarak:Sürüm: v4.0.30319 CLR Başlığı: 2.5 PE: PE32 CorFlags: 0x20003 ILONLY: 1 32BITREQ: 0 32BITPREF: 1 İmza: 0
32BITREQ
Bu olduğunu söylüyor AnyCPU
32bit gerekli değildir çünkü.
corflags
onun ile /32BITREQ+
seçeneğiyle sadece 32bit olmak exe değiştirmek için.%SystemRoot%\SYSWOW64\cmd.exe
ve aynı şekilde başarısız oldu - bir hata mesajı gösteriliyor - ve TaskManager'a baktığımda exe sürecim 32 bitlik bir işlem olarak gösterilmiyor
SYSWOW64\cmd.exe
hala 64-bit bir işlem olarak çalıştırılmasına neden olur (Ben sadece denedim).
Windows 7 Professional (veya üstü) kullanıyorsanız, Microsoft'un sanal XP modunu kullanın
Bu 32 bit ortam öykünür (?) ve bazı eski 16 bit programların çalıştırılması için yararlı olduğu kanıtlanmıştır
Aslında bunu yapmanın daha kolay bir yolu var (uzun vadeli bir çözüm değil).
"Corflags.exe" uygulamasını \ windows \ system32 klasörüne bırakın. Yönetici olarak bir komut satırı açın ve şunu yazın ...
corflags "exe'nin yolu ve adı" / 32BITPREF32 +
Bu, uygulamayı 64 bit yerine 32 bit işlem olarak çalışmaya zorlar.