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.