DuplicateTokenEx函式創建一個新的訪問令牌來複製一個已經存在的標記。 這個函式可以創建一個主令牌或模擬令牌 ,最低客戶端是Windows 2000專業版。
基本介紹
- 外文名:DuplicateTokenEx
- 最低客戶端:Windows 2000專業版
- 頭檔案:WINBASE.H
- 庫檔案:Advapi32.lib
定義,語法,參數,返回值,備註,要求,
定義
該函式
語法
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 |