Question

Comment puis-je obtenir les variables d'environnement et si quelque chose manque, définissez la valeur?

Était-ce utile?

La solution

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 facultatif Target est une énumération de type EnvironmentVariableTarget et peut être l'un des éléments suivants: Machine , Process ou Utilisateur . Si vous l'omettez, la cible par défaut est le processus en cours.

Autres conseils

J'ai rencontré ce problème alors que je travaillais sur une application de console .NET pour lire la variable d'environnement PATH et que l'utilisation de System.Environment.GetEnvironmentVariable développait 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 en tant que "C: \ Windows \ system32". Pour obtenir le chemin non étendu, je devais utiliser ceci:

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

A travaillé comme un charme pour moi.

Ceci fonctionnera pour une variable d’environnement qui est un réglage de la machine. Pour les utilisateurs, changez simplement d'utilisateur.

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

Obtenir et définir

Obtenir

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

Définir

string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);

Je pourrais pouvoir mettre à jour la variable d'environnement à l'aide de 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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top