ImpersonateLoggedOnUser-Funktion (securitybaseapi.h)

Mit der Funktion ImpersonateLoggedOnUser kann der aufrufende Thread die Identität des Sicherheitskontexts eines angemeldeten Benutzers annehmen. Der Benutzer wird durch ein Tokenhandle dargestellt.

Syntax

BOOL ImpersonateLoggedOnUser(
  [in] HANDLE hToken
);

Parameter

[in] hToken

Ein Handle für ein primäres Zugriffstoken oder Identitätswechsel-Zugriffstoken , das einen angemeldeten Benutzer darstellt. Dies kann ein Tokenhandle sein, das durch einen Aufruf der Funktionen LogonUser, CreateRestrictedToken, DuplicateToken, DuplicateTokenEx, OpenProcessToken oder OpenThreadToken zurückgegeben wird. Wenn hToken ein Handle für ein primäres Token ist, muss das Token über TOKEN_QUERY und TOKEN_DUPLICATE Zugriff verfügen. Wenn hToken ein Handle für ein Identitätswechseltoken ist, muss das Token über TOKEN_QUERY und TOKEN_IMPERSONATE Zugriff verfügen.

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

Der Identitätswechsel dauert, bis der Thread beendet wird oder bis revertToSelf aufgerufen wird.

Der aufrufende Thread benötigt keine bestimmten Berechtigungen , um ImpersonateLoggedOnUser aufzurufen.

Wenn der Aufruf von ImpersonateLoggedOnUser fehlschlägt, wird die Clientverbindung nicht identitätswechselt, und die Clientanforderung wird im Sicherheitskontext des Prozesses gestellt. Wenn der Prozess als Konto mit hohem Privilegierten ausgeführt wird, z. B. LocalSystem, oder als Mitglied einer administrativen Gruppe, kann der Benutzer möglicherweise Aktionen ausführen, die andernfalls nicht zulässig wären. Daher ist es wichtig, immer den Rückgabewert des Aufrufs zu überprüfen, und bei einem Fehler einen Fehler auszulösen. setzen Sie die Ausführung der Clientanforderung nicht fort.

Alle Identitätswechselfunktionen, einschließlich ImpersonateLoggedOnUser , lassen den angeforderten Identitätswechsel zu, wenn einer der folgenden Punkte zutrifft:

  • Die angeforderte Identitätswechselebene des Tokens ist kleiner als SecurityImpersonation, z. B. SecurityIdentification oder SecurityAnonymous.
  • Der Aufrufer verfügt über das SeImpersonatePrivilege-Recht .
  • Ein Prozess (oder ein anderer Prozess in der Anmeldesitzung des Aufrufers) hat das Token mithilfe expliziter Anmeldeinformationen über die Funktion LogonUser oder LsaLogonUser erstellt.
  • Die authentifizierte Identität ist mit dem Aufrufer identisch.
Windows XP mit SP1 und früher: Das SeImpersonatePrivilege-Recht wird nicht unterstützt.

Weitere Informationen zum Identitätswechsel finden Sie unter Clientidentitätswechsel.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile securitybaseapi.h (einschließlich Windows.h)
Bibliothek Advapi32.lib
DLL Advapi32.dll

Weitere Informationen

Client-/Server-Access Control-Funktionen

Client/Server Access Control Übersicht

CreateProcessAsUser

CreateRestrictedToken

DuplicateToken

DuplicateTokenEx

LogonUser

OpenProcessToken

OpenThreadToken

Reverttoself