2010-09-14 19 views
3

App: C#, .NET4, Windows 7Déterminer les variables d'environnement actuelles

Lorsqu'une application démarre, il obtient une copie des variables d'environnement actuelles et ils restent constants pour la vie de cette application. Je veux savoir comment obtenir les variables d'environnement actuelles, ce qui me permet de réagir aux changements.

Dois-je aller au registre? J'ai réfléchi engendrant un cmd.exe et en rejetant la sortie de l'ensemble, mais je préférerais quelque chose de moins hacky.

Merci

+0

Je pense que cmd fraie ne fonctionneraient pas: « Par défaut, un processus enfant hérite des variables d'environnement de son processus parent. » –

+0

Merci, je le pensais un peu, Martinho. C'est la grande raison pour laquelle je n'ai pas essayé cette expérience. – Thomas

Répondre

1

La surcharge suivante pourrait vous donner ce que vous voulez:

String Environment.GetEnvironmentVariable(String, EnvironmentVariableTarget) 

Essayez de passer EnvironmentVariableTarget.User ou EnvironmentVariableTarget.Machine.

Pour obtenir toutes les variables, appelez

IDictionary Environment.GetEnvironmentVariables(EnvironmentVariableTarget) 
+0

J'ai vérifié que cela fonctionne pour les variables de l'utilisateur, n'a pas testé la machine, mais à partir des documents que je m'attendais à ce que ce serait. Malheureusement, j'ai également vérifié que l'environnement que je recherchais (CLIENTNAME) n'est qu'une variable de processus. Tellement pour un moyen facile de voir qui est connecté à win7. – Thomas

+1

Si les questions sont, "Comment savoir qui est connecté à Windows 7?", Alors je suggère de regarder dans WMI http://msdn.microsoft.com/en-us/library/aa384642(v=VS. 85) .aspx. –