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

関連項目

CreateProcessAsUser

DestroyEnvironmentBlock

LogonUser

ユーザー プロファイルの概要

ユーザー プロファイル リファレンス