rpcImpersonateClient 函式 (rpcdce.h)
處理用戶端遠端程序呼叫的伺服器執行緒可以呼叫 RpcImpersonateClient 函式來模擬作用中的用戶端。
語法
RPC_STATUS RpcImpersonateClient(
RPC_BINDING_HANDLE BindingHandle
);
參數
BindingHandle
表示系結至用戶端之伺服器上的系結控制碼。 伺服器會模擬這個控制碼所指示的用戶端。 如果指定了零的值,伺服器就會模擬此伺服器執行緒所服務的用戶端。
傳回值
值 | 意義 |
---|---|
|
呼叫成功。 |
|
此伺服器執行緒上沒有作用中的用戶端。 |
|
作業系統、傳輸或這個安全性子系統都不支援此函式。 |
|
系結控制碼無效。 |
|
這是作業的系結錯誤類型。 |
|
伺服器沒有模擬用戶端的許可權。 |
注意 如需有效錯誤碼的清單,請參閱 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 |