web-dev-qa-db-ja.com

C#で環境変数を取得および設定するにはどうすればよいですか?

環境変数を取得するにはどうすればよいですか?何か不足している場合は、値を設定しますか?

174
Mister Dev

System.Environment クラスを使用します。

メソッド

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

そして

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

あなたのために仕事をします。

オプションのパラメーターTargetEnvironmentVariableTarget型の列挙型であり、MachineProcess、またはUserのいずれかです。省略すると、デフォルトのターゲットはcurrentプロセスです。

241

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

私にとって魅力のように働いた。

30
Nathan Bedford

これは、マシン設定である環境変数に対して機能します。ユーザーの場合は、代わりにユーザーに変更します。

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

Get and Set

取得

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

設定

string setEnv = Environment.SetEnvironmentVariable("envvar", varEnv);
10
Tom Stickel
Environment.SetEnvironmentVariable("Variable name", value, EnvironmentVariableTarget.User);
6

次を使用して環境変数を更新できます

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