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

Comment puis-je exécuter un exe en mode 32 bits sur une machine 64 bits ?

J'ai un exécutable qui fonctionne bien lorsqu'il est exécuté sur des fenêtres 32 bits mais qui se casse lorsqu'il est exécuté sur des fenêtres 64 bits.

Y a-t-il un moyen de le forcer à s'exécuter en mode 32 bits sur une machine 64 bits ?

Je n'ai pas accès au code source.

Réponses (4)

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

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

Si vous disposez de Windows 7 professional (ou supérieur), utilisez le mode XP virtuel de Microsoft

qui émule ( ?) un environnement 32 bits, et qui s'est avéré utile pour faire fonctionner certains anciens programmes 16 bits

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

Il existe en fait un moyen plus facile de s'adapter à cette situation (ce n'est pas une solution à long terme).

Déposez l'application “corflags.exe” dans le dossier \windows\system32. Ouvrez une ligne de commande en tant qu'administrateur et tapez…

corflags “chemin et nom de l'exe” /32BITPREF32+

Cela forcera l'application à s'exécuter comme un processus 32 bits au lieu de 64 bits.

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

J'ai tout essayé et rien n'a marché. Mais j'ai ensuite pensé à déplacer le répertoire gta iv des fichiers C/program(x86) vers les fichiers C/program et ça a marché puisque x86 est pour les applications 32 bits (je pense) mais ça a quand même marché.