DuplicateToken函数创建一个新的访问令牌,可以复制已存在的一个。
BOOL DuplicateToken(
HANDLE 【ExistingTokenHandle】, | //处理令牌以复制 |
SECURITY_IMPERSONATION_LEVEL 【ImpersonationLevel】, | //模拟级别 |
PHANDLE 【DuplicateTokenHandle】 | //处理复制的令牌 |
); |
参数
【ExistingTokenHandle】
标识使用TOKEN_DUPLICATE访问权限打开的访问令牌。
【ImpersonationLevel】
指定一个提供新令牌的模拟级别的SECURITY_IMPERSONATION_LEVEL枚举类型。
【DuplicateTokenHandle】
指向接收重复令牌句柄的变量的指针。该句柄具有TOKEN_IMPERSONATE和TOKEN_QUERY对新令牌的访问权限。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
备注
DuplicateToken功能创建一个模拟令牌,您可以在SetThreadToken和ImpersonateLoggedOnUser等功能中使用。由DuplicateToken创建的令牌不能在CreateProcessAsUser函数中使用,这需要一个主令牌。要创建可传递给CreateProcessAsUser的令牌,请使用DuplicateTokenEx功能。
也可以看看
CreateProcessAsUser, DuplicateTokenEx, ImpersonateLoggedOnUser, SECURITY_IMPERSONATION_LEVEL, SetThreadToken