環境変数
すべてのプロセスには、環境変数とその値のセットを含む環境ブロックがあります。 環境変数には、ユーザー環境変数 (ユーザーごとに設定) とシステム環境変数 (全員に設定) の 2 種類があります。
既定では、子プロセスは親プロセスの環境変数を継承します。 コマンド プロセッサによって開始されたプログラムは、コマンド プロセッサの環境変数を継承します。 子プロセスに別の環境を指定するには、新しい環境ブロックを作成し、そのブロックへのポインターをパラメーターとして CreateProcess 関数に渡します。
コマンド プロセッサは、セット コマンドを提供して、その環境ブロックを表示したり、新しい環境変数を作成したりします。 環境変数を表示または変更するには、コントロール パネルのから [システム ] を選択し、[システムの詳細設定] 選択し、[環境変数] クリックします。
各環境ブロックには、次の形式の環境変数が含まれています。
-
Var1=Value1\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 関数を使用します。
関連トピック