ISecurityProperty::GetDirectCallerSID 方法 (comsvcs.h)

擷取呼叫目前執行方法之外部進程的安全性標識碼。 您也可以使用 ISecurityCallContext 來取得此資訊。

語法

HRESULT GetDirectCallerSID(
  [out] PSID *pSID
);

參數

[out] pSID

叫用目前方法之進程之安全性標識碼的參考。

傳回值

這個方法可以傳回標準傳回值E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED和E_FAIL,以及下列值。

傳回碼 描述
S_OK
呼叫目前方法的進程安全性標識碼會在 參數 pSid 中傳回。
CONTEXT_E_NOCONTEXT
目前的 對象沒有與其相關聯的內容,因為元件未匯入應用程式,或物件不是使用其中一個 COM+ CreateInstance 方法建立。

備註

使用 GetDirectCallerSID 方法來判斷呼叫物件目前執行方法之進程的安全性識別碼。 安全性會跨進程界限強制執行。 這表示 GetDirectCallerSID 傳回的安全性識別碼是與呼叫至目前物件執行之進程的進程相關聯的安全性識別碼,不一定是物件本身的立即呼叫端。 如果物件在相同進程中呼叫另一個物件,當第二個物件呼叫 GetDirectCallerSID 時,它會取得本身進程界限外最直接呼叫端的安全性識別符,而不是直接呼叫它之物件的安全性標識符。

下列案例說明 GetDirectCallerSID 方法的功能:

  • 在伺服器 A 上執行的基底進程,以使用者 A 身分呼叫伺服器 B 上的物件 X,以使用者 B 身分執行。然後,物件 X 會呼叫物件 Y,並在伺服器 C 上執行。如果 Object Y 呼叫 GetDirectCallerSID,則會傳回使用者 B 的安全性識別碼。
  • 以使用者 A 身分在伺服器 A 上執行的基底進程,會在伺服器 B 上呼叫物件 X,以使用者 B 身分執行。然後,物件 X 會呼叫物件 Y,並在與物件 X 相同的進程中執行,同時在伺服器 B 上執行。當 Object Y 呼叫 GetDirectCallerSID 時,會傳回使用者 A 的安全性識別碼,而不是使用者 B 的安全性識別碼。
當您完成安全性識別碼時,您必須在安全性標識符上呼叫 ISecurityProperty::ReleaseSID

規格需求

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

另請參閱

ISecurityProperty