Функция 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 создает токен олицетворения, который можно использовать в таких функциях, как SetThreadToken и ImpersonateLoggedOnUser. Маркер, созданный DuplicateToken , не может использоваться в функции CreateProcessAsUser , для которой требуется первичный маркер. Чтобы создать маркер, который можно передать в CreateProcessAsUser, используйте функцию DuplicateTokenEx .

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header securitybaseapi.h (включая Windows.h)
Библиотека Advapi32.lib
DLL Advapi32.dll

См. также раздел

Обзор контроль доступа

Базовые функции контроль доступа

CreateProcessAsUser

DuplicateTokenEx

ImpersonateLoggedOnUser

SECURITY_IMPERSONATION_LEVEL

SetThreadToken