定義
該函式
語法
BOOL WINAPI DuplicateTokenEx(
__in HANDLE hExistingToken,
__in DWORD dwDesiredAccess,
__in_opt LPSECURITY_ATTRIBUTES lpTokenAttributes,
__in SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
__in TOKEN_TYPE TokenType,
__out PHANDLE phNewToken );
參數
hExistingToken
一個通過TOKEN_DUPLICATE標誌打開的訪問令牌的句柄。
dwDesiredAccess
指定為新的令牌請求的訪問權。 該函式通過使用自由訪問控制列表 (DACL)了來比較現有令牌的請求的訪問權利,以確定哪些權利可以被授予或拒絕。 為了與現有的令牌的訪問權利相同,可以指定創建的新的令牌的訪問許可權為零。 為了使得對所有調用者的訪問權有效,應該指定MAXIMUM_ALLOWED。
要查看一個訪問令牌的訪問許可權的列表,請查看 Access Rights for Access-Token Objects.
lpTokenAttributes [可選]
一個指針指向SECURITY_ATTRIBUTES結構,指定一個安全描述符標記為新的令牌,並確定子進程是否可以繼承該標記。 如果lpTokenAttributes為NULL,令牌獲得一個默認的安全描述符並且句柄不能被繼承。 如果安全描述符中包含一個系統訪問控制列表 (SACL),即使未在dwDesiredAccess中指定,令牌也可以獲得ACCESS_SYSTEM_SECURITY訪問權。
如果要設定新的令牌安全描述符的所有者,調用者的進程令牌必須含有SE_RESTORE_NAME許可權集。
ImpersonationLevel
指定為SECURITY_IMPERSONATION_LEVEL結構中所枚舉的值,用來表示新的令牌的模擬級別。
TokenType
指定下列從TOKEN_TYPE枚舉的值的其中一個。
取值 | 意義 |
TokenPrimary | 新的令牌是一個主令牌,你可以使用 CreateProcessAsUser函式。 |
TokenImpersonation | 新的令牌是一個模擬令牌。 |
.
phNewToken [輸出]
一個指針指向一個接收新的令牌的可變的句柄。
當您使用完的新的令牌,請調用CloseHandle的功能關閉令牌的句柄。
返回值
如果函式成功,函式返回一個非零值。
如果函式失敗,返回零。
為了獲得更多的錯誤信息,請調用 GetLastError函式 。
備註
DuplicateTokenEx函式允許您創建一個主令牌,使得你可以使用 CreateProcessAsUser函式。 這使得伺服器應用程式可以模擬客戶端創建一個具有 安全上下文的客戶端的進程。
請注意, DuplicateToken功能只能創建模擬令牌,這對於 CreateProcessAsUser是無效的。
要求
最低支持的客戶端 | Windows 2000專業版 |
最低支持的伺服器 | Windows 2000伺服器 |
頭檔案 | WINBASE.H中(包括Windows.h中) |
庫檔案 | Advapi32.lib |
DLL | Advapi32.dll |