2012-09-27 09:21:43 +0000 2012-09-27 09:21:43 +0000
18
18

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

Ich habe eine ausführbare Datei, die gut funktioniert, wenn sie unter 32-Bit-Fenstern ausgeführt wird, aber nicht, wenn sie unter 64-Bit-Fenstern ausgeführt wird.

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

Ich habe keinen Zugriff auf den Quellcode.

Antworten (4)

16
16
16
2012-09-27 09:49:02 +0000

Wie technisch ist die Antwort, die Sie wünschen? Sie können wahrscheinlich die Exe zwingen, immer 32bit mit ein paar SDK-Tools laufen, aber es erfordert ein wenig Arbeit.

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

Die komplexere Lösung besteht darin, zu prüfen, um welche Art von Exe es sich handelt, und sie dann selbst zu modifizieren. Hintergrund ist hier zu verstehen, dass kompilierter Code von Sprachen, die direkt mit den Windows-APIs arbeiten, zur Kompilierzeit vom Entwickler als 32bit oder 64bit erstellt wird. Dies kann dann nicht geändert werden, ohne in den Quellcode zurückzugehen.

Zunehmend werden Anwendungen jedoch über eine Virtualisierungsschicht geschrieben, die das Schreiben von Anwendungen erleichtert. Es gibt zwei gängige davon: .NET und Java. Bei Java bin ich mir nicht sicher, außer dass ich weiß, dass das Erzwingen der richtigen Java-Laufzeitinstallation das Problem löst.

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

  • Validieren, 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, wird für eine exe etwas zurückgegeben wie:
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, weil 32bit nicht erforderlich ist.

  • Verwenden Sie corflags mit seiner Option /32BITREQ+, um die Exe so zu ändern, dass sie nur 32bit ist.
3
3
3
2012-09-27 19:06:35 +0000

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

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

0
0
0
2018-11-29 21:07:43 +0000

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

Legen Sie die Anwendung “corflags.exe” in den Ordner \windows\system32 ab. Ö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 zu laufen.

0
0
0
2014-04-07 14:48:39 +0000

Habe alles ausprobiert und nichts hat funktioniert. aber dann dachte ich daran, das gta iv Verzeichnis von C/Programmdateien(x86) nach C/Programmdateien zu verschieben und es funktionierte, da x86 für 32bit Apps ist(denke ich), aber es funktionierte trotzdem.