[C#] Comment obtenir et définir les variables d'environnement en C #?


Answers

J'ai couru dans ceci tout en travaillant sur une application de console de .NET pour lire la variable d'environnement de PATH, et ai trouvé que using System.Environment.GetEnvironmentVariable développera automatiquement les variables d'environnement.

Je ne voulais pas que cela se produise ... cela signifie que les dossiers dans le 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);

A fonctionné à merveille pour moi.

Question

Comment puis-je obtenir les variables Environnment et si quelque chose manque, définir la valeur?




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



Je pourrais être en mesure de mettre à jour la variable d'environnement en utilisant ce qui suit

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);