LoadUserProfileW 函式 (userenv.h)
載入指定的使用者配置檔。 配置檔可以是 本機使用者配置檔 或 漫遊使用者配置檔。
語法
USERENVAPI BOOL LoadUserProfileW(
[in] HANDLE hToken,
[in, out] LPPROFILEINFOW lpProfileInfo
);
參數
[in] hToken
類型: HANDLE
由 LogonUser、CreateRestrictedToken、DuplicateToken、OpenProcessToken 或 OpenThreadToken 函式傳回之使用者的 Token。 令牌必須具有 TOKEN_QUERY、 TOKEN_IMPERSONATE和 TOKEN_DUPLICATE 存取權。 如需詳細資訊,請參閱 Access-Token 對象的訪問許可權。
[in, out] lpProfileInfo
類型: LPPROFILEINFO
PROFILEINFO 結構的指標。 如果結構的 dwSize 成員未設定為 sizeof(PROFILEINFO)
或 lpUserName 成員為 NULL,LoadUserProfile 會失敗並傳回ERROR_INVALID_PARAMETER。 如需詳細資訊,請參閱<備註>。
傳回值
類型: BOOL
如果成功,則為TRUE;否則為 FALSE。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
如果 lpProfileInfo 的 dwSize 成員未設定為 sizeof(PROFILEINFO)
或 lpUserName 成員為 NULL,則函式會失敗並傳回ERROR_INVALID_PARAMETER。
備註
當使用者以互動方式登入時,系統會自動載入使用者的配置檔。 如果服務或應用程式模擬使用者,系統就不會載入使用者的配置檔。 因此,服務或應用程式應該使用 LoadUserProfile 載入使用者的配置檔。
呼叫 LoadUserProfile 的服務與應用程式應該檢查使用者是否有漫遊配置檔。 如果使用者有漫遊配置檔,請將其路徑指定為 PROFILEINFO 的 lpProfilePath 成員。 若要擷取使用者的漫遊配置檔路徑,您可以呼叫 NetUserGetInfo 函式,並指定資訊層級 3 或 4。
成功傳回時,PROFILEINFO 的 hProfile 成員是開啟至使用者 Hive 根目錄的登錄機碼句柄。 它已以完整存取 (KEY_ALL_ACCESS) 開啟。 如果模擬用戶的服務需要讀取或寫入使用者的登錄檔,請使用此句柄,而不是 HKEY_CURRENT_USER。 請勿關閉 hProfile 句柄。 請改為將它傳遞給 UnloadUserProfile 函 式。 此函式會關閉句柄。 您應該確定已關閉使用者登錄區中機碼的所有句柄。 如果您未關閉所有開啟的登錄句柄,則使用者配置檔無法卸除。 如需詳細資訊,請參閱 登錄機碼安全性和訪問許可權 和 登錄 Hives。
請注意,在呼叫 CreateProcessAsUser 之前,您必須負責使用 LoadUserProfile 函式將使用者的登錄區載入HKEY_USERS登錄機碼。 這是因為 CreateProcessAsUser 不會將指定的使用者配置檔載入 HKEY_USERS。 這表示 存取HKEY_CURRENT_USER 登錄機碼中的資訊,可能不會產生與一般互動式登錄一致的結果。
呼叫進程必須具有 SE_RESTORE_NAME 和 SE_BACKUP_NAME 許可權。 如需詳細資訊,請參閱 以特殊許可權執行。
從 Windows XP Service Pack 2 (SP2) 和 Windows Server 2003 開始,呼叫端必須是系統管理員或 LocalSystem 帳戶。 呼叫端並不足以模擬系統管理員或 LocalSystem 帳戶。
注意
userenv.h 標頭會將LoadUserProfile定義為別名,根據UNICODE預處理器常數的定義,自動選取此函式的ANSI或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | userenv.h |
程式庫 | Userenv.lib |
Dll | Userenv.dll |