[ VB.NET / C# ] 3種類の環境変数の設定と削除 ( Environment.SetEnvironmentVariable )

Pocket

ここでは、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);

参考
スポンサーリンク


Pocket

One thought on “[ VB.NET / C# ] 3種類の環境変数の設定と削除 ( Environment.SetEnvironmentVariable )”

  1. Pingback: [ VB.NET / C# ] 環境変数を取得する ( Environment.ExpandEnvironmentVariables ) – 勉強ダイエット

Leave a Comment

Your email address will not be published. Required fields are marked *