DuplicateToken-Funktion (securitybaseapi.h)

Die DuplicateToken-Funktion erstellt ein neues Zugriffstoken , das ein bereits vorhandenes dupliziert.

Syntax

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

Parameter

[in] ExistingTokenHandle

Ein Handle für ein Zugriffstoken, das mit TOKEN_DUPLICATE Zugriff geöffnet wird.

[in] ImpersonationLevel

Gibt einen SECURITY_IMPERSONATION_LEVEL aufgezählten Typ an, der die Identitätswechselebene des neuen Tokens bereitstellt.

[out] DuplicateTokenHandle

Ein Zeiger auf eine Variable, die ein Handle für das doppelte Token empfängt. Dieses Handle verfügt über TOKEN_IMPERSONATE und TOKEN_QUERY Zugriff auf das neue Token.

Wenn Sie die Verwendung des neuen Tokens abgeschlossen haben, rufen Sie die CloseHandle-Funktion auf, um das Tokenhandle zu schließen.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Die DuplicateToken-Funktion erstellt ein Identitätswechseltoken, das Sie in Funktionen wie SetThreadToken und ImpersonateLoggedOnUser verwenden können. Das von DuplicateToken erstellte Token kann nicht in der CreateProcessAsUser-Funktion verwendet werden, die ein primäres Token erfordert. Verwenden Sie die DuplicateTokenEx-Funktion, um ein Token zu erstellen, das Sie an CreateProcessAsUser übergeben können.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile securitybaseapi.h (Einschließen von Windows.h)
Bibliothek Advapi32.lib
DLL Advapi32.dll

Weitere Informationen

Zugriffssteuerung Übersicht

Grundlegende Access Control-Funktionen

CreateProcessAsUser

DuplicateTokenEx

ImpersonateLoggedOnUser

SECURITY_IMPERSONATION_LEVEL

SetThreadToken