Nasıl ortam değişkenleri C # almak ve ayarlamak?


Yanıtlar:


258

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.


37
Ayrıca isteğe bağlı üçüncü parametreye de dikkat edin: System.Environment.SetEnvironmentVariable (değişken, değer, EnvironmentVariableTarget ) Olası değerler şunlardır: Makine , İşlem ve Kullanıcı
Lessan Vaezi

1
Mu EnvironmentVariableTarget.MachineYönetici erişimi gerektirir?
checksum

Evet öyle. Onsuz çalıştırmaya çalışmak bariz bir istisnaya neden olacaktır.
Erez A. Korn

30

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ı.


7
+1 Bu çözümü kullanmak zorunda kaldım çünkü Patrick Desjardins tarafından yanıtlanan diğeri yönetici ayrıcalıklarına sahip olmamı gerektirdi. Bu çözümle yönetici ayrıcalıklarına sahip olmadan ortam değişkeninin değerini okuyabildim!
Tono Nam

@TonoNam Patrick'in yanıtı , yönetici ayrıcalıkları olmadan makinemde çalışıyor . Sistem ortamı değişkenini ayarlamanın yönetici ayrıcalıkları gerektirdiğini unutmayın (elbette).
Franklin Yu

16

Al ve Ayarla

Almak

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

Ayarlamak

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

14

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

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

1
PATH değişkeninizin kalıcı olmasını istiyorsanız EnvironmentVariableTarget.Machinebunun yerine kullanın.
Daniel Bonetti

0

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);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.