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.
Réponses:
Quelle réponse technique souhaitez-vous? 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 simple est de lancer à partir d'un processus 32 bits (par exemple, utiliser
%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. Le contexte ici est de comprendre que le code compilé à partir de langages qui fonctionnent directement avec les API Windows sont créés en 32 bits ou 64 bits au moment de la compilation par le développeur. Cela ne peut pas ensuite ê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 d'applications. Il en existe deux courants: .NET et Java. Je ne suis pas sûr de Java, sauf en sachant que forcer l'installation du bon runtime Java avec résoudre le problème.
Pour .NET, vous pouvez utiliser les outils SDK pour:
corflags myExe.exe
. En utilisant un utilitaire à partir du SDK .NET pour lire les en-têtes d'un assemblage .NET, pour un exe retournera quelque chose comme:le
32BITREQ
me dit que c'estAnyCPU
parce que 32 bits n'est pas requis.corflags
avec son/32BITREQ+
option pour modifier l'exe en 32 bits uniquement.la source
%SystemRoot%\SYSWOW64\cmd.exe
et il a échoué de la même manière - affichant un message d'erreur - et lorsque j'archive TaskManager, mon processus exe ne s'affiche pas comme un processus 32 bitsSYSWOW64\cmd.exe
toujours fonctionner comme un processus 64 bits (je viens de l'essayer).Si vous avez Windows 7 Professionnel (ou supérieur), utilisez le mode XP virtuel de Microsoft
cela émule (?) un environnement 32 bits, et il s'est avéré utile pour faire fonctionner certains anciens programmes 16 bits
la source
J'ai tout essayé et rien n'a fonctionné. mais j'ai ensuite pensé à déplacer le répertoire gta iv des fichiers C / program (x86) vers les fichiers C / program et cela fonctionne puisque x86 est pour les applications 32 bits (je pense) mais a quand même fonctionné.
la source
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.
la source