RpcImpersonateClient-Funktion (rpcdce.h)
Ein Serverthread, der Client-Remoteprozeduraufrufe verarbeitet, kann die RpcImpersonateClient-Funktion aufrufen, um die Identität des aktiven Clients zu imitieren.
Syntax
RPC_STATUS RpcImpersonateClient(
RPC_BINDING_HANDLE BindingHandle
);
Parameter
BindingHandle
Bindungshandle auf dem Server, das eine Bindung an einen Client darstellt. Der Server gibt die Identität des Clients an, der durch dieses Handle angegeben wird. Wenn ein Wert von 0 angegeben wird, gibt der Server die Identität des Clients an, der von diesem Serverthread bedient wird.
Rückgabewert
Wert | Bedeutung |
---|---|
|
Der Aufruf war erfolgreich. |
|
In diesem Serverthread ist kein Client aktiv. |
|
Die Funktion wird weder für das Betriebssystem, den Transport noch für dieses Sicherheitssubsystem unterstützt. |
|
Das Bindungshandle war ungültig. |
|
Dies war die falsche Art der Bindung für den Vorgang. |
|
Der Server verfügt nicht über die Berechtigung, die Identität des Clients zu annehmen. |
Hinweise
Wenn der Aufruf von RpcImpersonateClient in einer Multithreadanwendung mit einem Handle für einen anderen Clientthread erfolgt, müssen Sie RpcRevertToSelfEx mit dem Handle für diesen Thread aufrufen, um den Identitätswechsel zu beenden.
Alle Funktionen, die die Identität annehmen, überprüfen, ob der Aufrufer dieser Funktion (der RPC-Server) über das SeImpersonatePrivilege-Recht verfügt. Wenn der Aufrufer über das SeImpersonatePrivilege verfügt oder die authentifizierte Identität mit der Identität des Aufrufers dieser Funktion identisch ist, ist der angeforderte Identitätswechsel zulässig. Andernfalls ist der Identitätswechsel nur auf der Identifizierungsebene erfolgreich.
Windows XP/2000/NT: Das SeImpersonatePrivilege-Recht wird erst unter Windows XP mit Service Pack 2 (SP2) unterstützt.
Sicherheitsbemerkungen
Wenn der Aufruf von RpcImpersonateClient aus irgendeinem Grund 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 wenn er fehlschlägt, geben Sie einen Fehler aus. setzen 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 |