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.
Antworten:
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:
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:das
32BITREQ
sagt mir das liegtAnyCPU
daran das 32bit nicht benötigt wird.corflags
mit seiner/32BITREQ+
Option , um die exe zu ändern 32bit nur zu sein.quelle
%SystemRoot%\SYSWOW64\cmd.exe
und es ist auf die gleiche Weise fehlgeschlagen - es wird eine Fehlermeldung angezeigt - und wenn ich im TaskManager einchecke, wird mein exe-Prozess nicht als 32-Bit-Prozess angezeigtSYSWOW64\cmd.exe
noch aus starten, wird sie als 64-Bit-Prozess ausgeführt (ich habe es gerade versucht).Wenn Sie Windows 7 Professional (oder höher) verwenden, 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
quelle
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.
quelle
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.
quelle