ここでは、C# および VB.NET から環境変数の設定と削除を行うサンプルコードを掲載しています。
スポンサーリンク
環境変数の種類
環境変数には、システム環境変数、ユーザー環境変数およびプロセス環境変数があります。
環境変数の種類 | 内容 |
---|---|
システム | レジストリに保存され永続性を持つ(他のプロセスにも引き継がれる) ユーザーの手動設定ができる |
ユーザー | レジストリに保存され永続性を持つ(他のプロセスにも引き継がれる) ユーザー単位で値を変更したい場合に使用される ユーザーの手動設定ができる |
プロセス | プログラムから環境変数を変更したとき、そのプロセスが終了するまで有効 ユーザーの手動設定はできない |
ユーザー操作による環境変数の設定
ユーザーが変更できるのは、ユーザー環境変数とシステム環境変数の2種類で [ コントロール パネル ] – [ システムとセキュリティ ] – [ システム] – [ システムの詳細設定 ] から変更できます。

環境変数の設定ダイアログ
環境変数はプログラムからは Environment.GetEnvironmentVariable メソッドなどで取得できますが、例えば上記のようにシステムとユーザーに同名(TEMP, TMP)の環境変数が設定されている場合、取得される値は ユーザー環境変数です。優先順位は、プロセス > ユーザー > システム の順になります。
環境変数の設定と削除を行うサンプルコード
Environment.SetEnvironmentVariable を使用して環境変数の設定と削除を行うサンプルコードです。システム環境変数の設定を行うには、管理者権限実行されている必要があります。詳細はコード内のコメントを参照ください。
VB.NET
' プロセス環境変数の設定 Environment.SetEnvironmentVariable("TEST_PROCESS_ENV", "10", EnvironmentVariableTarget.Process) ' ユーザー環境変数の設定 Environment.SetEnvironmentVariable("TEST_USER_ENV", "20", EnvironmentVariableTarget.User) ' システム環境変数は管理者権限で実行しないと、例外となる ' System.Security.SecurityException 要求されたレジストリ アクセスは許可されていません。 Environment.SetEnvironmentVariable("TEST_MACHINE_ENV", "30", EnvironmentVariableTarget.Machine) ' プロセス環境変数の削除 ' 環境変数の値に、Nothing や String.Empty を設定することで削除できる Environment.SetEnvironmentVariable("TEST_PROCESS_ENV", Nothing, EnvironmentVariableTarget.Process) ' ユーザー環境変数の削除 Environment.SetEnvironmentVariable("TEST_USER_ENV", Nothing, EnvironmentVariableTarget.User) ' システム環境変数の削除 Environment.SetEnvironmentVariable("TEST_MACHINE_ENV", String.Empty, EnvironmentVariableTarget.Machine)
C#
// プロセス環境変数の設定 Environment.SetEnvironmentVariable("TEST_PROCESS_ENV", "10", EnvironmentVariableTarget.Process); // ユーザー環境変数の設定 Environment.SetEnvironmentVariable("TEST_USER_ENV", "20", EnvironmentVariableTarget.User); // システム環境変数は管理者権限で実行しないと、例外となる // System.Security.SecurityException 要求されたレジストリ アクセスは許可されていません。 Environment.SetEnvironmentVariable("TEST_MACHINE_ENV", "30", EnvironmentVariableTarget.Machine); // プロセス環境変数の削除 // 環境変数の値に、null や String.Empty を設定することで削除できる Environment.SetEnvironmentVariable("TEST_PROCESS_ENV", null, EnvironmentVariableTarget.Process); // ユーザー環境変数の削除 Environment.SetEnvironmentVariable("TEST_USER_ENV", null, EnvironmentVariableTarget.User); // システム環境変数の削除 Environment.SetEnvironmentVariable("TEST_MACHINE_ENV", String.Empty, EnvironmentVariableTarget.Machine);
Pingback: [ VB.NET / C# ] 環境変数を取得する ( Environment.ExpandEnvironmentVariables ) – 勉強ダイエット