J'ai un exécutable qui fonctionne bien lorsqu'il est exécuté sur des fenêtres 32 bits, mais se casse lorsqu'il est exécuté sur des fenêtres 64 bits.
Existe-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.
Quelle est la réponse technique que vous voulez? Vous pouvez probablement forcer l'exe à toujours exécuter 32 bits avec quelques outils SDK, mais cela nécessite un peu de travail.
La réponse facile est de lancer à partir d’un processus 32 bits (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 vous-même. Il faut comprendre que le code compilé à partir de langages fonctionnant directement avec les API Windows est créé en 32 bits ou 64 bits au moment de la compilation par le développeur. Cela ne peut alors pas être changé sans revenir au code source.
Cependant, de plus en plus d'applications sont écrites via une couche de virtualisation facilitant leur écriture. Il existe deux communes: .NET et Java. Je ne suis pas sûr à propos de Java si ce n’est de savoir que forcer le bon programme d’installation Java pour résoudre le problème résout le problème.
Pour .NET, vous pouvez utiliser les outils du SDK pour:
corflags myExe.exe
. Utiliser un utilitaire du SDK .NET pour lire les en-têtes d'un assemblage .NET, car un exe retournera quelque chose comme:Version: v4.0.30319 CLR En-tête: 2.5 PE: PE32 CorFlags: 0x20003 ILONLY: 1 32BITREQ: 0 32BITPREF: 1 Signé: 0
le 32BITREQ
m'indique qu'il s'agit de AnyCPU
car 32 bits n'est pas requis.
corflags
avec son option /32BITREQ+
pour modifier le fichier exe en 32 bits seulement.Si vous avez Windows 7 Professionnel (ou supérieur), utilisez le mode virtuel XP de Microsoft .
cela émule (?) un environnement 32 bits, et il s’est avéré utile pour exécuter de vieux programmes 16 bits
J'ai tout essayé et rien n'a fonctionné. mais ensuite pensé à déplacer le répertoire gta iv des fichiers C/programme (x86) aux fichiers C/programme et cela fonctionne depuis x86 est pour les applications 32 bits (je pense) mais a fonctionné quand même.
Il existe en fait un moyen plus simple de gérer cela (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 en tant que processus 32 bits au lieu de 64 bits.