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

Come posso eseguire un exe in modalità 32-bit su una macchina a 64-bit?

Advertisement

Ho un eseguibile che funziona bene quando viene eseguito su finestre a 32 bit ma si rompe quando viene eseguito su finestre a 64 bit.

C'è un modo per forzare l'esecuzione in modalità 32-bit su una macchina a 64-bit?

Non ho accesso al codice sorgente.

Advertisement

Risposte (4)

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

Quanto vuoi una risposta tecnica? Probabilmente si può forzare l'exe a eseguire sempre a 32bit con alcuni strumenti SDK, ma richiede un po’ di lavoro.

La risposta facile è lanciare da un processo a 32bit (es. usa %SystemRoot%\SYSWOW64\cmd.exe per lanciare).

La più complessa è controllare che tipo di exe è, quindi modificarlo da soli. Lo sfondo qui è capire che il codice compilato dai linguaggi che lavorano direttamente con le API di Windows sono creati come 32bit o 64bit al momento della compilazione dallo sviluppatore. Questo non può essere cambiato senza tornare al codice sorgente.

Tuttavia, sempre più spesso le applicazioni sono scritte tramite uno strato di virtualizzazione che rende più facile la scrittura di applicazioni. Ce ne sono due comuni: .NET e Java. Non sono sicuro di Java, ma so che forzando l'installazione del giusto runtime Java si risolve il problema.

Per .NET potete usare gli strumenti SDK per:

  • Validare che l'applicazione sia “AnyCPU”: corflags myExe.exe. Usando un'utility dell'SDK .NET per leggere le intestazioni di un assembly .NET, per un exe restituirà qualcosa come:
Version : v4.0.30319 CLR Header: 2.5 PE : PE32 CorFlags : 0x20003 ILONLY : 1 32BITREQ : 0 32BITPREF : 1 Signed : 0

lo 32BITREQ mi dice che questo è AnyCPU perché 32bit non è richiesto.

  • Usa corflags con la sua opzione /32BITREQ+ per modificare l'exe per essere solo a 32bit.
3
3
3
2012-09-27 19:06:35 +0000

Se hai windows 7 professional (o superiore), allora usa la modalità XP virtuale da Microsoft

questo emula(?) un ambiente a 32 bit, e si è dimostrato utile per far funzionare alcuni vecchi programmi a 16 bit

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

In realtà c'è un modo più semplice per risolvere questo problema (non è una soluzione a lungo termine).

Rilasciate l'applicazione “corflags.exe” nella cartella \windows\system32. Aprite una riga di comando come amministratore e digitate…

corflags “percorso e nome dell'exe” /32BITPREF32+

Questo forzerà l'applicazione a funzionare come un processo a 32 bit invece che a 64 bit.

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

Ho provato di tutto e niente ha funzionato. ma poi ho pensato di spostare la directory di gta iv da C/program files (x86) a C/program files e ha funzionato poiché x86 è per applicazioni a 32bit (credo) ma ha funzionato comunque.

Advertisement