2008-10-08 12 views

Répondre

192

Utilisez la classe System.Environment.

La méthode

System.Environment.GetEnvironmentVariable() 

et

System.Environment.SetEnvironmentVariable() 

fera le travail pour vous.

+33

Notez également le troisième paramètre optionnel: System.Environment.SetEnvironmentVariable (variable, valeur, ** EnvironmentVariableTarget **) Les valeurs possibles sont: * Machine *, * Processus * et * utilisateur * Est-ce que –

+1

' EnvironmentVariableTarget.Machine' nécessite un accès administrateur? – checksum

+0

Oui, c'est le cas. Essayer de l'exécuter sans entraîner une exception évidente. –

8

Cela fonctionnera pour une variable d'environnement qui est le paramètre de la machine. Pour les utilisateurs, il suffit de passer à Utilisateur à la place.

String EnvironmentPath = System.Environment 
       .GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine); 
30

je suis tombé sur ce tout en travaillant sur une application console .NET pour lire la variable d'environnement PATH, et constaté que l'utilisation System.Environment.GetEnvironmentVariable augmentera automatiquement les variables d'environnement. Je ne voulais pas que cela se produise ... cela signifie que les dossiers du chemin tels que '% SystemRoot% \ system32' étaient réécrits en tant que 'C: \ Windows \ system32'. Pour obtenir le chemin non-développé, j'ai dû utiliser ceci:

string keyName = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\"; 
string existingPathFolderVariable = (string)Registry.LocalMachine.OpenSubKey(keyName).GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames); 

Travaillé comme un charme pour moi.

+5

+1 J'ai dû utiliser cette solution parce que l'autre répondant de Patrick Desjardins m'a demandé d'avoir des privilèges d'administrateur. J'ai été capable de lire la valeur de la variable d'environnement sans avoir de privilèges d'administration avec cette solution! –

6
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User); 
+1

Si vous voulez que votre variable PATH soit permanente, utilisez plutôt 'EnvironmentVariableTarget.Machine'. –

6

et ECRIRE

Get

string getEnv = Environment.GetEnvironmentVariable("envVar"); 

Set

string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv); 
0

je pourrais être en mesure de mettre à jour la variable d'environnement en utilisant le

suivant
string EnvPath = System.Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine) ?? string.Empty; 
if (!string.IsNullOrEmpty(EnvPath) && !EnvPath .EndsWith(";")) 
    EnvPath = EnvPath + ';'; 
EnvPath = EnvPath + @"C:\Test"; 
Environment.SetEnvironmentVariable("PATH", EnvPath , EnvironmentVariableTarget.Machine); 
Questions connexes