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 |
---|---|
|
La chiamata ha avuto esito positivo. |
|
Nessun client è attivo in questo thread del server. |
|
La funzione non è supportata per il sistema operativo, il trasporto o questo sottosistema di sicurezza. |
|
L'handle di associazione non è valido. |
|
Questo è stato il tipo di associazione sbagliato per l'operazione. |
|
Il server non dispone dell'autorizzazione per rappresentare il client. |
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 |