Variable d'environnement pour forcer les applications .NET à s'exécuter en 32 bits
-
03-07-2019 - |
Question
On m'a dit qu'il existe une variable d'environnement que vous pouvez définir pour forcer les applications .NET à s'exécuter en tant qu'applications 32 bits sur les versions x64 de Windows. Savez-vous ce que c'est ou connaissez-vous une référence? Je crains que mon google-fu ne m'ait pas réussi aujourd'hui (ou qu'il n'existe pas).
J'utilise Resolver One (une feuille de calcul .NET) et souhaite accéder à certaines fonctionnalités uniquement en 32 bits sans modifier l'exécutable. Si je peux configurer cela à partir d'une variable d'environnement, je peux accéder à la fonctionnalité 32 bits si nécessaire, mais aussi exécuter une application 64 bits si nécessaire.
(NOTE: effectivement, je veux pouvoir changer si une application fonctionne en 32 bits ou en 64 bits au moment du lancement au lieu de la forcer au moment de la compilation.)
Merci
La solution
J'ai reçu une réponse de Dino Veihland (développeur Microsoft IronPython). Je n'ai pas encore eu le temps de le tester.
C'est COMPLUS_ENABLE_64BIT. Je pense que le mettre à 0 désactive 64 bits.
Vous devriez pouvoir le définir en tant que variable d'env ou ajouter une valeur à HKLM \ Software \ Microsoft \ .NETFramework avec le nom "Enable_64Bit", le type REG_DWORD et la valeur 0 pour le définir globalement (c'est la tous les COMPlus_ * vars fonctionnent). Celui-ci est peut-être suffisamment spécial (il doit être exécuté avant la création du processus) pour pouvoir être défini dans la clé reg, mais je ne suis pas tout à fait sûr.
Autres conseils
Que diriez-vous de ce lien
Ce n'est pas tout à fait une variable d'environnement, mais utilisez simplement l'outil CoreFlags pour basculer d'avant en arrière.
Pour passer en 32 bits:
CorFlags.exe TheApp.exe /32BIT+
Pour revenir au 64 bits:
CorFlags.exe TheApp.exe /32BIT-
plate-forme cible dans la boîte de dialogue de la propriété du projet
Je vais bientôt essayer celui-ci - en gros, un wrapper exe qui tourne en 32 bits, puis lance votre application ciblée à partir de celle-ci. le mode 32 bits du parent devrait forcer l'exécution d'un binaire compilé AnyCPU en 32 bits. voir http://lostechies.com/gabrielschenker/2009/10/21/force-net-application-to-run-in-32bit-process-on-64bit-os/