DuplicateTokenEx
该函数创建一个新的访问令牌来复制一个已经存在的标记。 这个函数可以创建一个主令牌或模拟令牌。语法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
[1][2]