CreateEnvironmentBlock 関数 (userenv.h)
指定したユーザーの環境変数を取得します。 その後、このブロックを CreateProcessAsUser 関数に渡すことができます。
構文
BOOL CreateEnvironmentBlock(
[out] LPVOID *lpEnvironment,
[in, optional] HANDLE hToken,
[in] BOOL bInherit
);
パラメーター
[out] lpEnvironment
種類: LPVOID*
この関数が戻るときに、 は新しい環境ブロックへのポインターを受け取ります。 環境ブロックは、null で終わる Unicode 文字列の配列です。 リストは 2 つの null で終わります (\0\0)。
[in, optional] hToken
型: HANDLE
LogonUser 関数から返されたユーザーのトークン。 これがプライマリ トークンの場合、トークンには TOKEN_QUERYとTOKEN_DUPLICATE アクセス 権 が必要です。 トークンが偽装トークンの場合は、 TOKEN_QUERY アクセス権が必要です。 詳細については、「 Access-Token オブジェクトのアクセス権」を参照してください。
このパラメーターが NULL の場合、返される環境ブロックにはシステム変数のみが含まれます。
[in] bInherit
種類: BOOL
現在のプロセスの環境から継承するかどうかを指定します。 この値が TRUE の場合、プロセスは現在のプロセスの環境を継承します。 この値が FALSE の場合、プロセスは現在のプロセスの環境を継承しません。
戻り値
種類: BOOL
成功した場合は TRUE。それ以外の場合は FALSE。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
環境ブロックが終了したときにバッファーを解放するには、 DestroyEnvironmentBlock 関数を呼び出します。
環境ブロックが CreateProcessAsUser に渡される場合は、 CREATE_UNICODE_ENVIRONMENT フラグも指定する必要があります。 CreateProcessAsUser が返された後、新しいプロセスには環境ブロックのコピーがあり、DestroyEnvironmentBlock を安全に呼び出すことができます。
%USERPROFILE% などのユーザー固有の環境変数は、ユーザーのプロファイルが読み込まれたときにのみ設定されます。 ユーザーのプロファイルを読み込むには、 LoadUserProfile 関数を呼び出します。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | userenv.h |
Library | Userenv.lib |
[DLL] | Userenv.dll |