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