DuplicateTokenEx 函式 (securitybaseapi.h)
DuplicateTokenEx 函式會建立複製現有令牌的新 存取令牌。 這個函式可以建立 主要令牌 或 模擬令牌。
語法
BOOL DuplicateTokenEx(
[in] HANDLE hExistingToken,
[in] DWORD dwDesiredAccess,
[in, optional] LPSECURITY_ATTRIBUTES lpTokenAttributes,
[in] SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
[in] TOKEN_TYPE TokenType,
[out] PHANDLE phNewToken
);
參數
[in] hExistingToken
以TOKEN_DUPLICATE存取權開啟之存取令牌的句柄。
[in] dwDesiredAccess
指定新令牌的要求訪問許可權。 DuplicateTokenEx 函式會將要求的訪問許可權與現有令牌的 選擇性訪問控制清單 (DACL) 進行比較,以判斷要授與或拒絕哪些許可權。 若要要求與現有令牌相同的訪問許可權,請指定零。 若要要求所有對呼叫者有效的訪問許可權,請指定MAXIMUM_ALLOWED。
如需存取權杖的存取權限清單,請參閱 Access-Token 物件的存取權限。
[in, optional] lpTokenAttributes
若要在新令牌的安全性描述元中設定擁有者,呼叫端的進程令牌必須具有 SE_RESTORE_NAME 許可權集。
[in] ImpersonationLevel
指定來自 SECURITY_IMPERSONATION_LEVEL 列舉的值,這個值表示新令牌的模擬層級。
[in] TokenType
從 TOKEN_TYPE 列舉指定下列其中一個值。
價值 | 意義 |
---|---|
|
新的令牌是 主要令牌,您可以在 createProcessAsUser 函式中使用。 |
|
新的令牌是模擬令牌。 |
[out] phNewToken
接收新令牌之 HANDLE 變數的指標。
當您完成使用新的令牌時,請呼叫 CloseHandle 函式以關閉令牌句柄。
傳回值
如果函式成功,函式會傳回非零值。
如果函式失敗,則會傳回零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
言論
以下是使用 DuplicateTokenEx 建立 主要令牌的典型案例。 伺服器應用程式會建立線程,呼叫其中一個模擬函式,例如 ImpersonateNamedPipeClient,以模擬用戶端。 模擬線程接著會呼叫 OpenThreadToken 函式以取得自己的令牌,這是具有用戶端安全性內容的 模擬 令牌。 線程會在呼叫 DuplicateTokenEx中指定這個模擬令牌,並指定 TokenPrimary 旗標。 DuplicateTokenEx 函式會建立具有用戶端安全性內容的 主要令牌。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows XP [傳統型應用程式 |UWP 應用程式] |
支援的最低伺服器 | Windows Server 2003 [傳統型應用程式 |UWP 應用程式] |
目標平臺 | 窗戶 |
標頭 | securitybaseapi.h (包括 Windows.h) |
連結庫 | Advapi32.lib |
DLL | Advapi32.dll |