Jawaban:
Gunakan kelas System.Environment .
Metode
var value = System.Environment.GetEnvironmentVariable(variable [, Target])
dan
System.Environment.SetEnvironmentVariable(variable, value [, Target])
akan melakukan pekerjaan untuk Anda.
Parameter opsional Target
adalah enum jenis EnvironmentVariableTarget
dan dapat menjadi salah satu dari: Machine
, Process
, atau User
. Jika Anda menghilangkannya, target default adalah proses saat ini.
EnvironmentVariableTarget.Machine
memerlukan akses Administrator?
Saya mengalami ini ketika bekerja pada aplikasi .NET konsol untuk membaca variabel lingkungan PATH, dan menemukan bahwa menggunakan System.Environment.GetEnvironmentVariable akan memperluas variabel lingkungan secara otomatis.
Saya tidak ingin itu terjadi ... itu berarti folder di jalur seperti '% SystemRoot% \ system32' sedang ditulis ulang sebagai 'C: \ Windows \ system32'. Untuk mendapatkan jalur yang tidak diperluas, saya harus menggunakan ini:
string keyName = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\";
string existingPathFolderVariable = (string)Registry.LocalMachine.OpenSubKey(keyName).GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);
Bekerja seperti pesona bagi saya.
Dapatkan dan Atur
Dapatkan
string getEnv = Environment.GetEnvironmentVariable("envVar");
Set
string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);
Ini akan berfungsi untuk variabel lingkungan yaitu pengaturan mesin. Untuk Pengguna, ganti saja ke Pengguna.
String EnvironmentPath = System.Environment
.GetEnvironmentVariable("Variable_Name", EnvironmentVariableTarget.Machine);
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);
EnvironmentVariableTarget.Machine
.
Saya bisa dapat memperbarui variabel lingkungan dengan menggunakan yang berikut ini
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);