IServerSecurity::ImpersonateClient 方法 (objidl.h)

讓伺服器在呼叫期間模擬用戶端。

Syntax

HRESULT ImpersonateClient();

傳回值

如果方法成功,傳回值會S_OK。 否則會E_FAIL。

備註

通常,方法會在使用進程的存取令牌的線程上執行。 不過,模擬用戶端時,伺服器會在用戶端的安全性內容中執行,讓伺服器能夠存取用戶端可存取的資源。 當需要模擬時,伺服器會呼叫 ImpersonateClient 方法,以造成存取令牌,代表要指派給目前線程的客戶端認證。 此線程令牌用於存取檢查。 RevertToSelf 會還原目前線程的存取令牌。

伺服器可以代表用戶端執行的動作取決於客戶端所設定的模擬層級,這是使用其中一個 模擬層級常數所指定的。 伺服器可能會在識別、模擬或委派層級的加密呼叫上模擬用戶端。 如需這些模擬層級的相關信息,請參閱 模擬層級

模擬期間向伺服器顯示的身分識別取決於客戶端所設定的遮罩值類型。 如需詳細資訊,請參閱 Cloaking

在每個方法呼叫結束時,如果應用程式沒有,COM 將會呼叫 RevertToSelf

傳統上,模擬資訊不是巢狀的:任何模擬機制的最後一次呼叫會覆寫任何先前的模擬。 不過,在Apartment模型中,模擬會在巢狀呼叫期間維護。 因此,如果伺服器 A 收到來自 B 的呼叫、模擬、呼叫 C、接收來自 D 的呼叫、模擬、還原和接收來自 C 的回復,模擬令牌將會設定回 B,而非 A。

如需搭配異步呼叫使用仿真的資訊,請參閱 模擬和異步呼叫

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 objidl.h (包含 ObjIdl.h)

另請參閱

CoImpersonateClient

IServerSecurity