この記事では、この API のリファレンス ドキュメントに補足的な解説を提供します。
GetEnvironmentVariable メソッドは、現在のプロセスから環境変数の値を取得します。
環境変数名は Unix に似たシステムでは大文字と小文字が区別されますが、Windows では大文字と小文字は区別されません。
注
ネイティブ ライブラリによって行われたインプロセス環境の変更は、マネージド呼び出し元には表示されません。 逆に、マネージド呼び出し元によって行われたこのような変更は、ネイティブ ライブラリでは見られません。
GetEnvironmentVariable(String) メソッド
GetEnvironmentVariable(String) メソッドは、現在のプロセスの環境ブロックからのみ環境変数を取得します。 これは、EnvironmentVariableTarget.Processのtarget
値を使用してGetEnvironmentVariable(String, EnvironmentVariableTarget) メソッドを呼び出すことと同じです。
すべての環境変数とその値を取得するには、 GetEnvironmentVariables メソッドを呼び出します。
Windows システムの場合
Windows システムでは、現在のプロセスの環境ブロックには次のものが含まれます。
作成した親プロセスによって提供されるすべての環境変数。 たとえば、コンソール ウィンドウから起動された .NET アプリケーションは、コンソール ウィンドウのすべての環境変数を継承します。
親プロセスがない場合は、代わりにマシンごとの環境変数とユーザーごとの環境変数が使用されます。 たとえば、新しいコンソール ウィンドウには、起動時に定義されたすべてのマシンごとの環境変数とユーザーごとの環境変数があります。
プロセスの実行中にプロセス ブロックに追加された変数は、SetEnvironmentVariable(String, String) メソッドまたは EnvironmentVariableTarget.Process の
target
値を持つSetEnvironmentVariable(String, String, EnvironmentVariableTarget) メソッドを呼び出すことによって行われます。 これらの環境変数は、.NET アプリケーションが終了するまで保持されます。
プロセスの開始後に環境変数が作成された場合は、このメソッドを使用して、SetEnvironmentVariable(String, String) メソッドまたは .EnvironmentVariableTarget.Process のtarget
値を持つSetEnvironmentVariable(String, String, EnvironmentVariableTarget) メソッドを呼び出して作成された変数のみを取得できます。
Unix に似たシステムの場合
Unix に似たシステムでは、現在のプロセスの環境ブロックには次の環境変数が含まれます。
作成した親プロセスによって提供されるすべての環境変数。 シェルから起動された .NET アプリケーションの場合、これにはシェルで定義されているすべての環境変数が含まれます。
プロセスの実行中にプロセス ブロックに追加された変数は、SetEnvironmentVariable(String, String) メソッドまたは EnvironmentVariableTarget.Process の
target
値を持つSetEnvironmentVariable(String, String, EnvironmentVariableTarget) メソッドを呼び出すことによって行われます。 これらの環境変数は、.NET アプリケーションが終了するまで保持されます。
Unix に似たシステム上の .NET では、マシンごとまたはユーザーごとの環境変数はサポートされません。
GetEnvironmentVariable(String, EnvironmentVariableTarget) メソッド
すべての環境変数とその値を取得するには、 GetEnvironmentVariables メソッドを呼び出します。
Windows システムの場合
Windows では、 target
パラメーターは、環境変数を現在のプロセスから取得するか、現在のユーザーまたはローカル コンピューターの Windows オペレーティング システム レジストリ キーから取得するかを指定します。 .NET プロセスを作成した親プロセスで使用できるその他の環境変数と同様に、ユーザーごとおよびマシンごとの環境変数はすべて、現在のプロセスの環境ブロックに自動的にコピーされます。 ただし、現在のプロセスの環境ブロックにのみ追加された環境変数は、 SetEnvironmentVariable(String, String) メソッドまたは SetEnvironmentVariable(String, String, EnvironmentVariableTarget) メソッドを呼び出して、 target
値が EnvironmentVariableTarget.Process プロセスの期間中のみ保持されます。
Unix に似たシステムの場合
Unix に似たシステムでは、GetEnvironmentVariable(String, EnvironmentVariableTarget)
メソッドはEnvironmentVariableTarget.Processのtarget
値のみをサポートします。
EnvironmentVariableTarget.MachineまたはEnvironmentVariableTarget.Userのtarget
値を持つ呼び出しはサポートされておらず、null
を返します。
プロセスごとの環境変数は次のとおりです。
親プロセスから継承されたもの (通常は、
dotnet.exe
の呼び出しまたは .NET アプリケーションの起動に使用されるシェル)。target
値が EnvironmentVariableTarget.Process の SetEnvironmentVariable(String, String) メソッドまたは SetEnvironmentVariable(String, String, EnvironmentVariableTarget) メソッドを呼び出すことによって定義されます。 これらの環境変数は、dotnet
プロセスまたは .NET アプリケーションが終了するまでのみ保持されます。
.NET