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.
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