Quelle réponse technique souhaitez-vous ? Vous pouvez probablement forcer l'exe à toujours fonctionner en 32 bits avec quelques outils SDK, mais cela demande un peu de travail.
La réponse la plus simple est de lancer à partir d'un processus 32bit (par exemple, utilisez %SystemRoot%\SYSWOW64\cmd.exe
pour lancer).
Le plus complexe est de vérifier de quel type d'exe il s'agit, puis de le modifier soi-même. Il faut comprendre que le code compilé à partir de langages qui fonctionnent directement avec les API Windows est créé en 32 ou 64 bits au moment de la compilation par le développeur. Ce code ne peut donc pas être modifié sans revenir au code source.
Cependant, de plus en plus d'applications sont écrites via une couche de virtualisation qui facilite l'écriture des applications. Il existe deux couches communes : .NET et Java. Je ne suis pas sûr de Java, sauf que le fait de forcer l'installation du bon runtime Java résout le problème.
Pour .NET, vous pouvez utiliser les outils du SDK :
- Valider que l'application est “AnyCPU” :
corflags myExe.exe
. L'utilisation d'un utilitaire du SDK .NET pour lire les en-têtes d'un assemblage .NET, pour un exe, retournera quelque chose comme
Version : v4.0.30319 CLR Header: 2.5 PE : PE32 CorFlags : 0x20003 ILONLY : 1 32BITREQ : 0 32BITPREF : 1 Signed : 0
le 32BITREQ
me dit que c'est AnyCPU
parce que le 32bit n'est pas nécessaire.
- Utilisez
corflags
avec son option /32BITREQ+
pour modifier l'exe afin qu'il soit uniquement en 32 bits.