Wie kann ich eine exe im 32-Bit-Modus auf einem 64-Bit-Computer ausführen?

Ich habe eine ausführbare Datei, die unter 32-Bit-Fenstern einwandfrei funktioniert, bei 64-Bit-Fenstern jedoch unterbrochen wird.

Gibt es eine Möglichkeit, die Ausführung im 32-Bit-Modus auf einem 64-Bit-Computer zu erzwingen?

Ich habe keinen Zugriff auf den Quellcode.

Author: Dave, 2012-09-27

4 answers

Wie technisch eine Antwort wollen Sie? Sie können die exe wahrscheinlich zwingen, immer 32bit mit ein paar SDK-Tools auszuführen, aber es erfordert ein wenig Arbeit.

Die einfache Antwort ist von einem 32-Bit-Prozess zu starten (zB. verwenden Sie %SystemRoot%\SYSWOW64\cmd.exe zum Starten).

Der komplexere ist zu überprüfen, um welche Art von exe es ist, dann ändern Sie es selbst. Hintergrund hier ist zu verstehen, dass kompilierter Code aus Sprachen, die direkt mit den Windows-APIs arbeiten, zur Kompilierungszeit vom Kompilierer als 32-Bit oder 64-Bit erstellt wird Entwickler. Dies kann dann nicht geändert werden, ohne zum Quellcode zurückzukehren.

Anwendungen werden jedoch zunehmend über eine Virtualisierungsschicht geschrieben, die das Schreiben von Anwendungen erleichtert. Es gibt zwei gemeinsame:. NET und Java. Ich bin mir über Java nicht sicher, außer zu wissen, dass das Erzwingen der richtigen Java-Laufzeitinstallation das Problem löst.

Für. NET können Sie SDK-Tools verwenden, um:

  • Überprüfen Sie, ob die Anwendung "AnyCPU" ist: corflags myExe.exe. Verwenden eines Dienstprogramms aus. NET SDK zum Lesen der Header einer. NET-Assembly gibt eine EXE-Datei Folgendes zurück:
Version   : v4.0.30319
CLR Header: 2.5
PE        : PE32
CorFlags  : 0x20003
ILONLY    : 1
32BITREQ  : 0
32BITPREF : 1
Signed    : 0

Das 32BITREQ sagt mir, dass dies AnyCPU ist, da 32bit nicht erforderlich ist.

  • Verwenden Sie corflags mit seiner Option /32BITREQ+, um die EXE so zu ändern, dass sie nur 32 Bit enthält.
 17
Author: Richard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-09-27 09:49:02

Wenn Sie Windows 7 Professional (oder höher) haben, verwenden Sie den virtuellen XP-Modus von Microsoft

Dies emuliert(?) eine 32-bit-Umgebung, und es hat sich als nützlich erwiesen, für immer einige alte 16-bit-Programme ausführen

 3
Author: SeanC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-09-27 19:06:35

Versuchte alles und nichts funktionierte. aber dann dachte ich darüber nach, das gta iv-Verzeichnis von den C/program files(x86) in C/program files zu verschieben, und es funktioniert, da x86 für 32-Bit-Apps ist(glaube ich), aber trotzdem funktioniert hat.

 0
Author: mdb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-04-07 14:48:39

Es gibt tatsächlich eine einfachere Möglichkeit, dies zu berücksichtigen (keine langfristige Lösung).

Löschen Sie die Anwendung " corflags.exe" in den Ordner " \windows\system32 Ordner. Öffnen Sie eine Befehlszeile als Administrator und geben Sie ein...

Corflags "Pfad und Name der exe" / 32BITPREF32 +

Dadurch wird die Anwendung gezwungen, als 32-Bit-Prozess anstelle von 64-Bit auszuführen.

 0
Author: Chris Kirkman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-11-29 21:07:43