次の方法で共有


LoadUserProfileA 関数 (userenv.h)

指定したユーザーのプロファイルを読み込みます。 プロファイルには、ローカル ユーザー プロファイル または ローミング ユーザー プロファイルを指定できます。

構文

USERENVAPI BOOL LoadUserProfileA(
  [in]      HANDLE         hToken,
  [in, out] LPPROFILEINFOA lpProfileInfo
);

パラメーター

[in] hToken

型: HANDLE

LogonUser、CreateRestrictedToken、DuplicateTokenOpenProcessToken、または OpenThreadToken 関数 によって返されるユーザーのトークン。 トークンには、TOKEN_QUERYTOKEN_IMPERSONATE、および TOKEN_DUPLICATE アクセス権が必要です。 詳細については、「Access-Token オブジェクトのアクセス権を する」を参照してください。

[in, out] lpProfileInfo

型: LPPROFILEINFO

PROFILEINFO 構造体へのポインター。 loadUserProfile 失敗し、構造体の dwSize メンバーが に設定されていない場合、または lpUserName メンバーが NULL場合に ERROR_INVALID_PARAMETER を返します。 詳細については、「解説」を参照してください。

戻り値

型: BOOL

成功した場合は TRUE を します。それ以外の場合は、FALSEを します。 拡張エラー情報を取得するには、GetLastError呼び出します。

この関数は失敗し、lpProfileInfo の構造体の dwSize メンバーが に設定されていない場合、または lpUserName メンバーが NULL場合、ERROR_INVALID_PARAMETERを返します。

備考

ユーザーが対話形式でログオンすると、システムはユーザーのプロファイルを自動的に読み込みます。 サービスまたはアプリケーションがユーザーを偽装した場合、システムはユーザーのプロファイルを読み込まない。 そのため、サービスまたはアプリケーションは、LoadUserProfileを使用してユーザーのプロファイル 読み込む必要があります。

LoadUserProfile 呼び出すサービスとアプリケーションは、ユーザーがローミング プロファイルを持っているかどうかを確認する必要があります。 ユーザーがローミング プロファイルを持っている場合は、そのパスを PROFILEINFOの lpProfilePath メンバー 指定します。 ユーザーのローミング プロファイル パスを取得するには、情報レベル 3 または 4 を指定して、NetUserGetInfo 関数を呼び出します。

正常に戻ると、PROFILEINFOhProfile メンバーは、ユーザーのハイブのルートに対して開かれたレジストリ キー ハンドルです。 フル アクセス (KEY_ALL_ACCESS) で開かれています。 ユーザーを偽装しているサービスがユーザーのレジストリ ファイルの読み取りまたは書き込みを行う必要がある場合は、HKEY_CURRENT_USERの代わりにこのハンドルを使用します。 hProfile ハンドルを閉じないでください。 代わりに、UnloadUserProfile 関数に渡します。 この関数はハンドルを閉じます。 ユーザーのレジストリ ハイブ内のキーに対するすべてのハンドルが閉じられるようにする必要があります。 開いているレジストリ ハンドルをすべて閉じなければ、ユーザーのプロファイルのアンロードに失敗します。 詳細については、「レジストリ キーのセキュリティとアクセス権の とレジストリ ハイブのする」を参照してください。

CreateProcessAsUserを呼び出す前に、LoadUserProfile 関数を使用してユーザーのレジストリ ハイブを HKEY_USERS レジストリ キーに読み込む必要があることに注意してください。 これは、CreateProcessAsUser が指定したユーザーのプロファイルを HKEY_USERSに読み込まないためです。 つまり、HKEY_CURRENT_USER レジストリ キー内の情報にアクセスしても、通常の対話型ログオンと一貫性のある結果が得られない可能性があります。

呼び出し元のプロセスには、SE_RESTORE_NAMESE_BACKUP_NAME の特権が必要です。 詳細については、「特別な特権を使用した実行 」を参照してください。

Windows XP Service Pack 2 (SP2) および Windows Server 2003 以降では、呼び出し元は管理者または LocalSystem アカウントである必要があります。 呼び出し元が管理者または LocalSystem アカウントを偽装するだけでは不十分です。

手記

userenv.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして LoadUserProfile を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー userenv.h
ライブラリ Userenv.lib
DLL Userenv.dll

関連項目

PROFILEINFO

UnloadUserProfile の

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

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