Les variables d’environnement sont différentes pour dll et exe

Je débogue une application 64 bits où c # exe utilise une dll native c ++, sous Windows 7. Il semble que les variables d’environnement soient différentes pour ces deux applications, même si elles s’exécutent toutes deux dans le même processus. Comment est-il possible que l’appel de System.Environment.SetEnvironmentVariable n’ait aucun effet sur les valeurs renvoyées par getenv ()?

Les variables d’environnement ne sont qu’un bloc de données qui est transmis par Windows au processus lorsqu’il démarre. Les fonctions d’exécution que vous utilisez (BCL pour System.Environment et CRT pour getenv) effectuent probablement des copies de l’environnement au démarrage, ce qui signifie qu’elles ne fonctionnent pas avec les mêmes variables “d’environnement”.

Conceptuellement, ils doivent le faire car sinon, il faudrait un moyen de les synchroniser pour accéder à l’environnement.

Vous pouvez essayer d’utiliser la fonction ci-dessous. Vous devez transmettre EnvironmentVariableTarget en tant que http://msdn.microsoft.com/en-us/library/system.environmentvariabletarget.aspx en vous basant sur vos besoins.

public SetEnvironmentVariable (variable de chaîne, valeur de chaîne, cible EnvironmentVariableTarget)