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 Target
tipte bir enum olan EnvironmentVariableTarget
ve biri olabilir: Machine
, Process
ya da User
. Bunu atlarsanız, varsayılan hedef geçerli işlemdir.
EnvironmentVariableTarget.Machine
Yö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.Machine
bunun 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);