it-swarm.com.de

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

Ich habe eine ausführbare Datei, die in 32-Bit-Fenstern einwandfrei funktioniert, aber in 64-Bit-Fenstern nicht funktioniert.

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.

18
Rory

Wie technisch soll die Antwort sein? Sie können die exe wahrscheinlich zwingen, immer 32-Bit mit ein paar SDK-Tools auszuführen, dies erfordert jedoch ein wenig Arbeit.

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

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

Zunehmend werden Anwendungen jedoch über eine Virtualisierungsebene geschrieben, die das Schreiben von Anwendungen erleichtert. Es gibt zwei gebräuchliche: .NET und Java. Ich bin mir bei 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:

  • Vergewissern Sie sich, dass die Anwendung "AnyCPU" ist: corflags myExe.exe. Wenn Sie ein Dienstprogramm aus dem .NET SDK verwenden, um die Header einer .NET-Assembly zu lesen, gibt eine exe etwa Folgendes zurück:
 Version: v4.0.30319 
 CLR-Header: 2.5 
 PE: PE32 
 CorFlags: 0x20003 
 ILONLY: 1 
 32BITREQ: 0 
 32BITPREF: 1 
 Signiert: 0 

der 32BITREQ sagt mir, dass dies AnyCPU ist, da 32bit nicht benötigt werden.

  • Verwenden Sie corflags mit der Option /32BITREQ+, um die exe nur auf 32-Bit zu ändern.
16
Richard

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

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

3
SeanC

Versuchte alles und nichts hat funktioniert. aber dann überlegte gta iv verzeichnis von den c/program files (x86) nach c/program files zu verschieben und es funktioniert da x86 für 32bit apps ist (glaube ich) aber trotzdem funktioniert.

0
mdb

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

Legen Sie die Anwendung "corflags.exe" im Ordner\windows\system32 ab. Öffnen Sie eine Befehlszeile als Administrator und geben Sie Folgendes ein ...

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

Dadurch wird die Ausführung der Anwendung als 32-Bit-Prozess anstelle von 64-Bit erzwungen.

0
Chris Kirkman