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:
- Validate , dass die Anwendung ist „AnyCPU“:
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
das 32BITREQ
sagt mir das liegt AnyCPU
daran das 32bit nicht benötigt wird.
- Verwenden Sie
corflags
mit seiner /32BITREQ+
Option , um die exe zu ändern 32bit nur zu sein.