Bir exe'yi 64 bit makinede 32 bit modunda nasıl çalıştırabilirim?


18

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.


Bu pek mantıklı değil. Yazılım, 64bit makinede çalıştırılmazsa açıkça başarısız kılan bir kod içermediği sürece. 32 bit 64bit üzerinde iyi çalışıyor, sorun başka bir yol geliyor (32bit üzerinde 64bit çalışıyor). Hata mesajı alıyor musunuz?
Dave

3
Bu kod yazdınız mı (bu durumda Stack Overflow, kod ve hata mesajlarıyla birlikte sorulması gereken yer) veya çalıştırdığınız başka bir program mı? Aldığınız hata mesajlarını eklerseniz yardımcı olur.
ChrisF

Yanıtlar:


16

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:

  • Doğrulama uygulaması "AnyCPU" olduğunu: 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

32BITREQBu olduğunu söylüyor AnyCPU32bit gerekli değildir çünkü.

  • Kullanım corflagsonun ile /32BITREQ+seçeneğiyle sadece 32bit olmak exe değiştirmek için.

+1 .Net AnyCPU ayarı ilk düşüncemdi. Tek yapmanız gereken, bu ayarı düzgün bir şekilde belirtmemek için farkında olmayan bir programcı. Derlendikten sonra düzeltmenin bir yolu olduğunu duymak harika.
E-Yiyecek

2
Başlatmayı denedim %SystemRoot%\SYSWOW64\cmd.exeve 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
Rory

1
Dave'in yukarıda sorduğu gibi, tam olarak hangi hata mesajını alıyorsunuz?
Karan

5
Yönetilen bir AnyCPU EXE başlatmak SYSWOW64\cmd.exehala 64-bit bir işlem olarak çalıştırılmasına neden olur (Ben sadece denedim).
Carl Walsh

3

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


0

Her şeyi denedim ve hiçbir şey işe yaramadı. ancak daha sonra gta iv dizinini C / program dosyalarından (x86) C / program dosyalarına taşımayı düşündüm ve x86 32bit uygulamalar (sanırım) için çalıştığı için çalışıyor ama yine de çalıştı.


0

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.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.