Comment puis-je obtenir des variables d'environnement et si quelque chose manque, définir la valeur?
Comment puis-je obtenir des variables d'environnement et si quelque chose manque, définir la valeur?
Réponses:
Utilisez la classe System.Environment .
Les méthodes
var value = System.Environment.GetEnvironmentVariable(variable [, Target])
et
System.Environment.SetEnvironmentVariable(variable, value [, Target])
fera le travail pour vous.
Le paramètre optionnel Targetest un ENUM de type EnvironmentVariableTargetet il peut être l' une: Machine, Processou User. Si vous l'omettez, la cible par défaut est le processus en cours.
EnvironmentVariableTarget.Machineun accès administrateur?
J'ai rencontré cela en travaillant sur une application console .NET pour lire la variable d'environnement PATH, et j'ai constaté que l'utilisation de System.Environment.GetEnvironmentVariable étend 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.
Obtenir et définir
Avoir
string getEnv = Environment.GetEnvironmentVariable("envVar");
Ensemble
string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);
Cela fonctionnera pour une variable d'environnement définie par la machine. Pour les utilisateurs, changez simplement en Utilisateur.
String EnvironmentPath = System.Environment
.GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine);
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);
EnvironmentVariableTarget.Machineplace.
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);