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.