Condividi tramite


Funzione RpcImpersonateClient (rpcdce.h)

Un thread del server che elabora le chiamate di routine remota client può chiamare la funzione RpcImpersonateClient per rappresentare il client attivo.

Sintassi

RPC_STATUS RpcImpersonateClient(
  RPC_BINDING_HANDLE BindingHandle
);

Parametri

BindingHandle

Handle di associazione nel server che rappresenta un'associazione a un client. Il server rappresenta il client indicato da questo handle. Se viene specificato un valore pari a zero, il server rappresenta il client che viene servito da questo thread del server.

Valore restituito

Valore Significato
RPC_S_OK
La chiamata ha avuto esito positivo.
RPC_S_NO_CALL_ACTIVE
Nessun client è attivo in questo thread del server.
RPC_S_CANNOT_SUPPORT
La funzione non è supportata per il sistema operativo, il trasporto o questo sottosistema di sicurezza.
RPC_S_INVALID_BINDING
L'handle di associazione non è valido.
RPC_S_WRONG_KIND_OF_BINDING
Questo è stato il tipo di associazione sbagliato per l'operazione.
RPC_S_NO_CONTEXT_AVAILABLE
Il server non dispone dell'autorizzazione per rappresentare il client.
 
Nota Per un elenco di codici di errore validi, vedere Valori restituiti RPC.
 

Commenti

In un'applicazione multithreaded, se la chiamata a RpcImpersonateClient è con un handle a un altro thread client, è necessario chiamare RpcRevertToSelfEx con l'handle per terminare la rappresentazione.

Tutte le funzioni che rappresentano controllano per determinare se il chiamante di questa funzione (il server RPC) ha il privilegio SeImpersonatePrivilege. Se il chiamante ha SeImpersonatePrivilege o se l'identità autenticata corrisponde all'identità del chiamante di questa funzione, la rappresentazione richiesta è consentita. In caso contrario, la rappresentazione ha esito positivo solo a livello di identificazione.

Windows XP/2000/NT: Il privilegio SeImpersonatePrivilege non è supportato fino a quando Windows XP con Service Pack 2 (SP2).

Osservazioni sulla sicurezza

Se la chiamata a RpcImpersonateClient ha esito negativo per qualsiasi motivo, la connessione client non viene rappresentata e la richiesta client viene effettuata nel contesto di sicurezza del processo. Se il processo viene eseguito come account con privilegi elevati, ad esempio LocalSystem o come membro di un gruppo amministrativo, l'utente può essere in grado di eseguire azioni che altrimenti non saranno consentite. È quindi importante controllare sempre il valore restituito della chiamata e, se ha esito negativo, generare un errore; non continuare l'esecuzione della richiesta client.

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione rpcdce.h
Libreria Rpcrt4.lib
DLL Rpcrt4.dll

Vedi anche

Rappresentazione client

RpcRevertToSelf