ここでは、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 ) – 勉強ダイエット