Yanıtlar:
System.Environment sınıfını kullanın .
Metodlar
var value = System.Environment.GetEnvironmentVariable(variable [, Target])
ve
System.Environment.SetEnvironmentVariable(variable, value [, Target])
işi senin için yapacak.
İsteğe bağlı parametre Targettipte bir enum olan EnvironmentVariableTargetve biri olabilir: Machine, Processya da User. Bunu atlarsanız, varsayılan hedef geçerli işlemdir.
EnvironmentVariableTarget.MachineYönetici erişimi gerektirir?
PATH ortam değişkenini okumak için bir .NET konsol uygulaması üzerinde çalışırken buna rastladım ve System.Environment.GetEnvironmentVariable kullanmanın ortam değişkenlerini otomatik olarak genişleteceğini buldum.
Bunun olmasını istemedim ... Bu, yoldaki '% SystemRoot% \ system32' gibi klasörlerin 'C: \ Windows \ system32' olarak yeniden yazıldığı anlamına geliyor. Genişletilmemiş yolu almak için şunu kullanmak zorunda kaldım:
string keyName = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\";
string existingPathFolderVariable = (string)Registry.LocalMachine.OpenSubKey(keyName).GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);
Benim için bir cazibe gibi çalıştı.
Al ve Ayarla
Almak
string getEnv = Environment.GetEnvironmentVariable("envVar");
Ayarlamak
string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);
Bu, makine ayarı olan bir ortam değişkeni için çalışacaktır. Kullanıcılar için bunun yerine Kullanıcı olarak değiştirin.
String EnvironmentPath = System.Environment
.GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine);
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);
EnvironmentVariableTarget.Machinebunun yerine kullanın.
Ortam değişkenini aşağıdakileri kullanarak güncelleyebilirim
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);