DuplicateToken 函数 (securitybaseapi.h)

DuplicateToken 函数创建一个新的访问令牌,该令牌复制一个已经存在的令牌。

语法

BOOL DuplicateToken(
  [in]  HANDLE                       ExistingTokenHandle,
  [in]  SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
  [out] PHANDLE                      DuplicateTokenHandle
);

参数

[in] ExistingTokenHandle

使用TOKEN_DUPLICATE访问权限打开的访问令牌的句柄。

[in] ImpersonationLevel

指定提供新令牌的模拟级别的 SECURITY_IMPERSONATION_LEVEL 枚举类型。

[out] DuplicateTokenHandle

指向接收重复令牌句柄的变量的指针。 此句柄具有对新令牌的TOKEN_IMPERSONATE和TOKEN_QUERY访问权限。

使用完新令牌后,调用 CloseHandle 函数以关闭令牌句柄。

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

注解

DuplicateToken 函数创建一个模拟令牌,可在 SetThreadTokenImpersonateLoggedOnUser 等函数中使用。 DuplicateToken 创建的令牌不能在 CreateProcessAsUser 函数中使用,该函数需要主令牌。 若要创建可以传递给 CreateProcessAsUser 的令牌,请使用 DuplicateTokenEx 函数。

要求

要求
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 securitybaseapi.h (包括 Windows.h)
Library Advapi32.lib
DLL Advapi32.dll

另请参阅

访问控制概述

基本访问控制函数

CreateProcessAsUser

DuplicateTokenEx

ImpersonateLoggedOnUser

SECURITY_IMPERSONATION_LEVEL

SetThreadToken