環境変数
すべてのプロセスには、環境変数とその値のセットを含む環境ブロックがあります。 環境変数には、ユーザー環境変数 (ユーザーごとに設定) とシステム環境変数 (すべてのユーザーに設定) の 2 種類があります。
既定では、子プロセスは親プロセスの環境変数を継承します。 コマンド プロセッサによって開始されたプログラムは、コマンド プロセッサの環境変数を継承します。 子プロセスに別の環境を指定するには、新しい環境ブロックを作成し、そのブロックへのポインターをパラメーターとして CreateProcess 関数に渡します。
コマンド プロセッサは 、環境 ブロックを表示したり、新しい環境変数を作成したりするための set コマンドを提供します。 環境変数を表示または変更するには、コントロール パネルから [システム] を選択し、[システムの詳細設定] を選択し、[環境変数] をクリックします。
各環境ブロックには、次の形式の環境変数が含まれています。
-
Var1=値 1\0
Var2=Value2\0
Var3=Value3\0
...
VarN=ValueN\0\0
環境変数の名前に等号 (=) を含めることはできません。
GetEnvironmentStrings 関数は、呼び出し元プロセスの環境ブロックへのポインターを返します。 これは読み取り専用ブロックとして扱う必要があります。直接変更しないでください。 代わりに、 SetEnvironmentVariable 関数を使用して環境変数を変更します。 GetEnvironmentStrings から取得した環境ブロックが終了したら、FreeEnvironmentStrings 関数を呼び出してブロックを解放します。
SetEnvironmentVariable を呼び出しても、システム環境変数には影響しません。 プログラムによってシステム環境変数を追加または変更するには、それらをHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment レジストリ キーに追加し、lParam が文字列 "Environment" に設定されたWM_SETTINGCHANGE メッセージをブロードキャストします。 これにより、シェルなどのアプリケーションで更新プログラムを取得できます。
ユーザー定義環境変数の最大サイズは 32,767 文字です。 環境ブロックのサイズに技術的な制限はありません。 ただし、ブロックへのアクセスに使用されるメカニズムによっては、実際的な制限があります。 たとえば、バッチ ファイルでは、コマンド ラインの最大長を超える変数を設定できません。
Windows Server 2003 および Windows XP: プロセスの環境ブロックの最大サイズは 32,767 文字です。 Windows Vista および Windows Server 2008 以降では、環境ブロックのサイズに技術的な制限はありません。
GetEnvironmentVariable 関数は、指定された変数が呼び出し元プロセスの環境で定義されているかどうかを判断し、定義されている場合はその値を決定します。
特定のユーザーの環境ブロックのコピーを取得するには、 CreateEnvironmentBlock 関数を使用します。
環境変数の文字列を展開するには、 ExpandEnvironmentStrings 関数を 使用します。
関連トピック