Come posso ottenere e impostare le variabili di ambiente in C #?

Come posso ottenere le variabili di Environnment e se qualcosa manca, impostare il valore?

Utilizzare la class System.Environment.

Il metodo

System.Environment.GetEnvironmentVariable() 

e

 System.Environment.SetEnvironmentVariable() 

farà il lavoro per te.

Mi sono imbattuto in questo mentre lavoravo su un’app console .NET per leggere la variabile d’ambiente PATH e ho scoperto che l’utilizzo di System.Environment.GetEnvironmentVariable espande automaticamente le variabili d’ambiente.

Non volevo che ciò accadesse … significa che le cartelle nel percorso come ‘% SystemRoot% \ system32’ sono state riscritte come ‘C: \ Windows \ system32’. Per ottenere il percorso non espanso, ho dovuto usare questo:

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

Ha funzionato benissimo per me.

Questo funzionerà per una variabile d’ambiente che è l’impostazione della macchina. Per gli utenti, basta invece passare a Utente.

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

Ottieni e imposta

Ottenere

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

Impostato

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

Potrei essere in grado di aggiornare la variabile d’ambiente usando quanto segue

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