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
RPC_S_OK
Der Aufruf war erfolgreich.
RPC_S_NO_CALL_ACTIVE
In diesem Serverthread ist kein Client aktiv.
RPC_S_CANNOT_SUPPORT
Die Funktion wird weder für das Betriebssystem, den Transport noch für dieses Sicherheitssubsystem unterstützt.
RPC_S_INVALID_BINDING
Das Bindungshandle war ungültig.
RPC_S_WRONG_KIND_OF_BINDING
Dies war die falsche Art der Bindung für den Vorgang.
RPC_S_NO_CONTEXT_AVAILABLE
Der Server verfügt nicht über die Berechtigung, die Identität des Clients zu annehmen.
 
Hinweis Eine Liste der gültigen Fehlercodes finden Sie unter RPC-Rückgabewerte.
 

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

Weitere Informationen

Clientidentitätswechsel

RpcRevertToSelf