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

Hoe kan ik een exe in 32-bit modus uitvoeren op een 64-bit machine?

Ik heb een uitvoerbaar bestand dat prima werkt op 32-bit Windows, maar kapot gaat als het op 64-bit Windows wordt uitgevoerd.

Is er een manier waarop ik het kan forceren om in 32-bit mode op een 64-bit machine te draaien?

Ik heb geen toegang tot de broncode.

Antwoorden (4)

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

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.
3
3
3
2012-09-27 19:06:35 +0000

Als je Windows 7 professional (of hoger) hebt, gebruik dan de virtuele XP mode van Microsoft

dit emuleert(?) een 32 bit omgeving, en het is nuttig gebleken om enkele oude 16 bit programma’s aan de praat te krijgen

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

Er is eigenlijk een makkelijkere manier om dit te regelen (geen lange termijn oplossing).

Zet de toepassing “corflags.exe” in de map Windows-system32. Open een commandoregel als administrator en type…

corflags “pad en naam van de exe” /32BITPREF32+

Dit zal de applicatie dwingen om als een 32-bit proces te draaien in plaats van 64-bit.

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

Alles geprobeerd en niets werkte. maar toen dacht ik om gta iv directory te verplaatsen van de C/program files(x86) naar C/program files en het werkte aangezien x86 voor 32bit apps is(denk ik) maar werkte toch.