指定したユーザーのプロファイルを読み込む。プロファイルはローカルユーザープロファイルまたは移動ユーザープロファイルのいずれかである。(Unicode)
LoadUserProfileW hToken, lpProfileInfo
hToken : [intptr] 型: HANDLE LogonUser、CreateRestrictedToken、DuplicateToken、OpenProcessToken、OpenThreadToken 関数から返されるユーザーのトークン。このトークンには TOKEN_QUERY、TOKEN_IMPERSONATE、TOKEN_DUPLICATE のアクセス権が必要である。詳細は Access Rights for Access-Token Objects を参照。 lpProfileInfo : [var] 型: LPPROFILEINFO PROFILEINFO 構造体へのポインタ。構造体の dwSize メンバーが sizeof(PROFILEINFO) に設定されていない場合、または lpUserName メンバーが NULL の場合、LoadUserProfile は失敗して ERROR_INVALID_PARAMETER を返す。詳細は解説を参照。
(プラグイン / モジュール : userenv.dll)
指定したユーザーのプロファイルを読み込む。プロファイルはローカルユーザープロファイルまたは移動ユーザープロファイルのいずれかである。(Unicode) [戻り値] 型: BOOL 成功した場合は TRUE、それ以外は FALSE を返す。拡張エラー情報を取得するには GetLastError を呼び出す。 lpProfileInfo の構造体の dwSize メンバーが sizeof(PROFILEINFO) に設定されていない場合、または lpUserName メンバーが NULL の場合、関数は失敗して ERROR_INVALID_PARAMETER を返す。 [備考] ユーザーが対話的にログオンすると、システムは自動的にユーザープロファイルを読み込む。サービスやアプリケーションがユーザーを偽装している場合、システムはユーザープロファイルを読み込まない。そのためサービスやアプリケーションは LoadUserProfile を使ってユーザープロファイルを読み込む必要がある。LoadUserProfile を呼び出すサービスやアプリケーションは、ユーザーが移動プロファイルを持っているかどうかを確認するべきである。ユーザーが移動プロファイルを持っている場合は、そのパスを PROFILEINFO の lpProfilePath メンバーに指定する。ユーザーの移動プロファイルパスは NetUserGetInfo 関数で情報レベル 3 または 4 を指定して取得できる。成功して戻ると、PROFILEINFO の hProfile メンバーはユーザーのハイブのルートに対して開かれたレジストリキーハンドルとなり、フルアクセス (KEY_ALL_ACCESS) で開かれている。ユーザーを偽装しているサービスがユーザーのレジストリファイルを読み書きする必要がある場合、HKEY_CURRENT_USER の代わりにこのハンドルを使うべきである。hProfile ハンドルは閉じず、UnloadUserProfile 関数に渡すこと。同関数がハンドルを閉じる。ユーザーのレジストリハイブ内のすべてのキーハンドルが閉じられていることを確認する必要がある。すべての開いているレジストリハンドルを閉じないと、ユーザープロファイルのアンロードに失敗する。詳細は Registry Key Security and Access Rights および Registry Hives を参照。CreateProcessAsUser を呼び出す前に、LoadUserProfile 関数でユーザーのレジストリハイブを HKEY_USERS レジストリキーに読み込むのは呼び出し側の責任である点に注意。CreateProcessAsUser は指定したユーザーのプロファイルを HKEY_USERS に読み込まないためである。これは、HKEY_CURRENT_USER レジストリキー内の情報へのアクセスが通常の対話的ログオンと一致する結果を生成しない可能性があることを意味する。呼び出しプロセスは SE_RESTORE_NAME および SE_BACKUP_NAME 特権を持っている必要がある。詳細は Running with Special Privileges を参照。Windows XP Service Pack 2 (SP2) および Windows Server 2003 以降では、呼び出し側は管理者または LocalSystem アカウントでなければならない。単に管理者または LocalSystem アカウントを偽装するだけでは不十分である。 > [!NOTE] > userenv.h ヘッダーは LoadUserProfile をエイリアスとして定義しており、UNICODE プリプロセッサ定数の定義に応じて ANSI 版または Unicode 版を自動的に選択する。エンコーディング非依存のエイリアスと、エンコーディング非依存でないコードを混在して使うと、コンパイルエラーや実行時エラーの原因になる可能性がある。詳細は [Conventions for Function Prototypes](/windows/win32/intl/conventions-for-function-prototypes) を参照。
| プラグイン / モジュール | userenv.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の userenv.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_userenv_gen2.hs |