답변:
System.Environment 클래스를 사용하십시오 .
방법
var value = System.Environment.GetEnvironmentVariable(variable [, Target])
과
System.Environment.SetEnvironmentVariable(variable, value [, Target])
당신을 위해 일을 할 것입니다.
선택적 매개 변수는 Target
타입의 열거입니다 EnvironmentVariableTarget
그것은 중 하나가 될 수 있습니다 Machine
, Process
또는 User
. 생략하면 기본 대상이 현재 프로세스입니다.
EnvironmentVariableTarget.Machine
관리자 액세스가 필요 합니까 ?
.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);
나를 위해 매력처럼 일했습니다.
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);
EnvironmentVariableTarget.Machine
.
다음을 사용하여 환경 변수를 업데이트 할 수 있습니다.
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);