RpcImpersonateClient-Funktion (rpcdce.h)
Ein Serverthread, der Client-Remoteprozeduraufrufe verarbeitet, kann die RpcImpersonateClient-Funktion aufrufen, um den aktiven Client zu imitieren.
Syntax
RPC_STATUS RpcImpersonateClient(
RPC_BINDING_HANDLE BindingHandle
);
Parameter
BindingHandle
Bindungshandpunkt auf dem Server, der eine Bindung an einen Client darstellt. Der Server beschreibt den durch diesen Handle angegebenen Client. Wenn ein Wert von Null angegeben wird, wird der Server den Client, der von diesem Serverthread bereitgestellt wird, imitiert.
Rückgabewert
Wert | Bedeutung |
---|---|
|
Der Aufruf war erfolgreich. |
|
Auf diesem Serverthread ist kein Client aktiv. |
|
Die Funktion wird für das Betriebssystem, den Transport oder dieses Sicherheitssystem nicht unterstützt. |
|
Der Bindungspunkt war ungültig. |
|
Dies war die falsche Art der Bindung für den Vorgang. |
|
Der Server verfügt nicht über die Berechtigung zum Identitätswechsel des Clients. |
Hinweise
Wenn der Aufruf von RpcImpersonateClient in einer Multithread-Anwendung mit einem Handle zu einem anderen Clientthread besteht, müssen Sie RpcRevertToSelfEx mit dem Handle für diesen Thread aufrufen, um die Identität zu beenden.
Alle Funktionen, die den Identitätswechsel überprüfen, um zu ermitteln, ob der Aufrufer dieser Funktion (der RPC-Server) über das SeImpersonatePrivilege-Recht verfügt. Wenn der Anrufer über das SeImpersonatePrivilege verfügt oder die authentifizierte Identität identisch ist wie die Identität des Anrufers dieser Funktion, ist die angeforderte Identität zulässig. Andernfalls ist die Identitätswechsel nur auf Der Ebene "Identifizieren" erfolgreich.
Windows XP/2000/NT: Das SeImpersonatePrivilege-Recht wird erst unterstützt, wenn Windows XP mit Service Pack 2 (SP2) unterstützt wird.
Sicherheitsshinweise
Wenn der Aufruf von RpcImpersonateClient aus irgendeinem Grund fehlschlägt, wird die Clientverbindung nicht identitätsverändert, und die Clientanforderung wird im Sicherheitskontext des Prozesses vorgenommen. Wenn der Prozess als hoch privilegiertes Konto ausgeführt wird, z. B. LocalSystem oder Mitglied einer administrativen Gruppe, kann der Benutzer Aktionen ausführen, die sonst nicht zulässig wären. Daher ist es wichtig, immer den Rückgabewert des Aufrufs zu überprüfen, und wenn es fehlschlägt, wird ein Fehler ausgelöst; Führen Sie die Ausführung der Clientanforderung nicht fort.Anforderungen
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | rpcdce.h |
Bibliothek | Rpcrt4.lib |
DLL | Rpcrt4.dll |