Hoe technisch wil je het antwoord? Je kunt waarschijnlijk de exe forceren om altijd 32bit te draaien met een paar SDK tools, maar het vereist wel een beetje werk.
Het makkelijke antwoord is om te starten vanuit een 32bit proces (gebruik bijv. %SystemRoot%\SYSWOW64\cmd.exe
om te starten).
Het meer complexe is om te controleren wat voor exe het is, en het dan zelf aan te passen. Achtergrond hier is om te begrijpen dat gecompileerde code van talen die direct werken met de Windows API’s worden aangemaakt als 32bit of 64bit tijdens het compileren door de ontwikkelaar. Dit kan vervolgens niet worden gewijzigd zonder terug te gaan naar de broncode.
Steeds meer toepassingen worden echter geschreven via een virtualisatielaag die het schrijven van toepassingen gemakkelijker maakt. Er zijn twee gangbare: .NET en Java. Van Java ben ik niet zeker, behalve dat ik weet dat het forceren van de juiste Java runtime installatie het probleem oplost.
Voor .NET kun je SDK tools gebruiken om:
- te valideren dat de applicatie “AnyCPU” is:
corflags myExe.exe
. Met behulp van een hulpprogramma van de .NET SDK om de headers van een .NET assembly te lezen, voor een exe zal iets teruggeven als:
Version : v4.0.30319 CLR Header: 2.5 PE : PE32 CorFlags : 0x20003 ILONLY : 1 32BITREQ : 0 32BITPREF : 1 Signed : 0
de 32BITREQ
vertelt me dat dit AnyCPU
is omdat 32bit niet vereist is.
- Gebruik
corflags
met zijn /32BITREQ+
optie om de exe te wijzigen zodat deze alleen 32bit is.