Bagaimana cara saya mendapatkan dan mengatur variabel Lingkungan di C #?


Jawaban:


258

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 Targetadalah enum jenis EnvironmentVariableTargetdan dapat menjadi salah satu dari: Machine, Process, atau User. Jika Anda menghilangkannya, target default adalah proses saat ini.


37
Perhatikan juga parameter opsional ketiga: System.Environment.SetEnvironmentVariable (variabel, nilai, EnvironmentVariableTarget ) Nilai yang mungkin adalah: Mesin , Proses , dan Pengguna
Lessan Vaezi

1
Apakah EnvironmentVariableTarget.Machinememerlukan akses Administrator?
checksum

Ya, benar. Mencoba menjalankannya tanpa akan menghasilkan pengecualian yang jelas.
Erez A. Korn

30

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.


7
+1 Saya harus menggunakan solusi ini karena yang lain dijawab oleh Patrick Desjardins mengharuskan saya untuk memiliki hak admin. Saya bisa membaca nilai variabel lingkungan tanpa memiliki hak admin dengan solusi ini!
Tono Nam

@TonoNam Jawaban Patrick bekerja di mesin saya tanpa hak admin. Perhatikan bahwa pengaturan variabel lingkungan Sistem memang memerlukan hak admin (tentu saja).
Franklin Yu

16

Dapatkan dan Atur

Dapatkan

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

Set

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

14

Ini akan berfungsi untuk variabel lingkungan yaitu pengaturan mesin. Untuk Pengguna, ganti saja ke Pengguna.

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

6
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);

1
Jika Anda ingin variabel PATH Anda digunakan secara permanen EnvironmentVariableTarget.Machine.
Daniel Bonetti

0

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);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.