C #에서 환경 변수를 가져오고 설정하는 방법은 무엇입니까?


답변:


258

System.Environment 클래스를 사용하십시오 .

방법

var value = System.Environment.GetEnvironmentVariable(variable [, Target])

System.Environment.SetEnvironmentVariable(variable, value [, Target])

당신을 위해 일을 할 것입니다.

선택적 매개 변수는 Target타입의 열거입니다 EnvironmentVariableTarget그것은 중 하나가 될 수 있습니다 Machine, Process또는 User. 생략하면 기본 대상이 현재 프로세스입니다.


37
또한 세번째 매개 변수를주의 : System.Environment.SetEnvironmentVariable (변수, 값, EnvironmentVariableTarget ) 가능한 값은 다음과 같습니다 기계 , 프로세스사용자
Lessan 톨라 바에 지

1
EnvironmentVariableTarget.Machine관리자 액세스가 필요 합니까 ?
체크섬

그렇습니다. 없이 실행하려고하면 명백한 예외가 발생합니다.
Erez A. Korn

30

.NET 콘솔 앱에서 PATH 환경 변수를 읽는 동안이 문제가 발생했으며 System.Environment.GetEnvironmentVariable을 사용하면 환경 변수가 자동으로 확장됩니다.

'% SystemRoot % \ system32'와 같은 경로의 폴더가 'C : \ Windows \ system32'로 다시 작성되고 있음을 원하지 않습니다. 확장되지 않은 경로를 얻으려면 다음을 사용해야했습니다.

string keyName = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\";
string existingPathFolderVariable = (string)Registry.LocalMachine.OpenSubKey(keyName).GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames);

나를 위해 매력처럼 일했습니다.


7
+1 Patrick Desjardins가 대답 한 다른 솔루션에 관리자 권한이 필요했기 때문에이 솔루션을 사용해야했습니다. 이 솔루션으로 관리자 권한이 없어도 환경 변수의 값을 읽을 수있었습니다!
Tono Nam

@TonoNam Patrick의 답변은 관리자 권한 없이 내 컴퓨터에서 작동합니다 . 시스템 환경 변수를 설정하려면 관리자 권한이 필요합니다 (물론).
Franklin Yu

16

가져 오기 및 설정

가져 오기

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

세트

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

14

이것은 기계 설정 인 환경 변수에 적용됩니다. 사용자의 경우 대신 사용자로 변경하십시오.

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

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

1
PATH 변수를 영구적으로 사용하려면 EnvironmentVariableTarget.Machine.
Daniel Bonetti

0

다음을 사용하여 환경 변수를 업데이트 할 수 있습니다.

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);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.