rpcImpersonateClient 函式 (rpcdce.h)

處理用戶端遠端程序呼叫的伺服器執行緒可以呼叫 RpcImpersonateClient 函式來模擬作用中的用戶端。

語法

RPC_STATUS RpcImpersonateClient(
  RPC_BINDING_HANDLE BindingHandle
);

參數

BindingHandle

表示系結至用戶端之伺服器上的系結控制碼。 伺服器會模擬這個控制碼所指示的用戶端。 如果指定了零的值,伺服器就會模擬此伺服器執行緒所服務的用戶端。

傳回值

意義
RPC_S_OK
呼叫成功。
RPC_S_NO_CALL_ACTIVE
此伺服器執行緒上沒有作用中的用戶端。
RPC_S_CANNOT_SUPPORT
作業系統、傳輸或這個安全性子系統都不支援此函式。
RPC_S_INVALID_BINDING
系結控制碼無效。
RPC_S_WRONG_KIND_OF_BINDING
這是作業的系結錯誤類型。
RPC_S_NO_CONTEXT_AVAILABLE
伺服器沒有模擬用戶端的許可權。
 
注意 如需有效錯誤碼的清單,請參閱 RPC 傳回值
 

備註

在多執行緒應用程式中,如果 RpcImpersonateClient 的呼叫具有另一個用戶端執行緒的控制碼,您必須使用該執行緒的控制碼呼叫 RpcRevertToSelfEx 以結束模擬。

模擬檢查以判斷此函式呼叫端是否 (RPC Server) 具有 SeImpersonatePrivilege 許可權的所有函式。 如果呼叫端具有 SeImpersonatePrivilege,或已驗證的身分識別與此函式呼叫端的身分識別相同,則允許要求的模擬。 否則,模擬只會在識別層級成功。

Windows XP/2000/NT: 在 Windows XP Service Pack 2 (SP2) 之前,不支援 SeImpersonatePrivilege 許可權。

安全性備註

如果 RpcImpersonateClient 的呼叫因任何原因而失敗,則不會模擬用戶端連線,而且會在進程的安全性內容中提出用戶端要求。 如果進程是以高許可權帳戶執行,例如 LocalSystem 或系統管理群組的成員,則使用者可能能夠執行他們否則不允許的動作。 因此請務必一律檢查呼叫的傳回值,如果失敗,請引發錯誤;請勿繼續執行用戶端要求。

需求

   
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 rpcdce.h
程式庫 Rpcrt4.lib
Dll Rpcrt4.dll

另請參閱

用戶端模擬

RpcRevertToSelf