Функция 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 |