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

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-Windows einwandfrei funktioniert, unter 64-Bit-Windows jedoch abstürzt.

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.

Antwort1

Wie technisch soll die Antwort sein? Sie können die EXE wahrscheinlich mit ein paar SDK-Tools dazu zwingen, immer in 32 Bit zu laufen, aber das erfordert ein wenig Arbeit.

Die einfache Antwort besteht darin, von einem 32-Bit-Prozess aus zu starten (z. B. %SystemRoot%\SYSWOW64\cmd.exezum Starten verwenden).

Komplexer ist es, zu prüfen, um welche Art von EXE es sich handelt, und sie dann selbst zu ändern. Hintergrund ist hier, dass kompilierter Code aus Sprachen, die direkt mit den Windows-APIs arbeiten, vom Entwickler zur Kompilierzeit als 32-Bit oder 64-Bit erstellt wird. Dies kann dann nicht geändert werden, ohne zum Quellcode zurückzukehren.

Allerdings werden Anwendungen zunehmend über eine Virtualisierungsschicht geschrieben, die das Schreiben von Anwendungen erleichtert. Es gibt zwei gängige Schichten: .NET und Java. Bei Java bin ich mir nicht sicher, weiß aber, dass das Erzwingen der richtigen Java-Runtime-Installation das Problem löst.

Für .NET können Sie SDK-Tools für Folgendes verwenden:

  • Überprüfen Sie, ob die Anwendung „AnyCPU“ ist: corflags myExe.exe. Wenn Sie ein Dienstprogramm aus dem .NET SDK verwenden, um die Header einer .NET-Assembly zu lesen, wird für eine EXE-Datei etwas wie Folgendes zurückgegeben:
Version: v4.0.30319
CLR-Header: 2,5
PE: PE32
CorFlags: 0x20003
Ich allein: 1
32BITREQ: 0
32BITPREF: 1
Signiert: 0

das 32BITREQsagt mir, dass das AnyCPUdaran liegt, dass 32 Bit nicht erforderlich sind.

  • Verwenden Sie corflagsdie /32BITREQ+Option, um die EXE so zu ändern, dass sie nur 32 Bit umfasst.

Antwort2

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

Dies emuliert(?) eine 32-Bit-Umgebung und hat sich als nützlich erwiesen, um einige alte 16-Bit-Programme zum Laufen zu bringen

Antwort3

Habe alles versucht und nichts hat funktioniert. Aber dann habe ich darüber nachgedacht, das Verzeichnis gta iv von C/Programme (x86) nach C/Programme zu verschieben, und es hat funktioniert, da x86 für 32-Bit-Apps ist (glaube ich), aber es hat trotzdem funktioniert.

Antwort4

Es gibt tatsächlich einen einfacheren Weg, dies zu bewältigen (keine langfristige Lösung).

Legen Sie die Anwendung „corflags.exe“ in den Ordner \windows\system32. Ö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 statt als 64-Bit-Prozess ausgeführt zu werden.

verwandte Informationen