Comment puis-je obtenir et définir les variables d’environnement en C #?

Comment puis-je obtenir des variables d’environnement et, s’il manque quelque chose, définir la valeur?

Utilisez la classe System.Environment.

La méthode

System.Environment.GetEnvironmentVariable() 

et

 System.Environment.SetEnvironmentVariable() 

fera le travail pour vous.

Je me suis heurté à cela pendant que je travaillais sur une application de console .NET pour lire la variable d’environnement PATH et que l’utilisation de System.Environment.GetEnvironmentVariable étendait 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 en cours de réécriture sous le nom “C: \ Windows \ system32”. Pour obtenir le chemin non étendu, j’ai dû utiliser ceci:

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

A fonctionné à merveille pour moi.

Cela fonctionnera pour une variable d’environnement qui est la configuration de la machine. Pour les utilisateurs, remplacez simplement l’utilisateur par utilisateur.

 Ssortingng EnvironmentPath = System.Environment .GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine); 
 Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User); 

Get et Set

Obtenir

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

Ensemble

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

Je pourrais être en mesure de mettre à jour la variable d’environnement en utilisant les éléments suivants

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