ISecurityProperty::GetDirectCallerSID 方法 (comsvcs.h)

检索调用当前正在执行方法的外部进程的安全标识符。 还可以使用 ISecurityCallContext 获取此信息。

语法

HRESULT GetDirectCallerSID(
  [out] PSID *pSID
);

参数

[out] pSID

对从中调用当前方法的进程的安全 ID 的引用。

返回值

此方法可以返回标准返回值E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED和E_FAIL,以及以下值。

返回代码 说明
S_OK
调用当前方法的进程的安全 ID 在参数 pSid 中返回。
CONTEXT_E_NOCONTEXT
当前对象没有与之关联的上下文,因为组件未导入应用程序,或者对象不是使用 COM+ CreateInstance 方法之一创建的。

注解

使用 GetDirectCallerSID 方法确定调用对象的当前正在执行方法的进程的安全 ID。 跨进程边界强制实施安全性。 这意味着 ,GetDirectCallerSID 返回的安全 ID 是与调用当前对象所在的进程(不一定是对象本身的直接调用方)关联的安全 ID。 如果对象在同一进程中调用另一个对象,则当第二个对象调用 GetDirectCallerSID 时,它将获取其进程边界之外最直接调用方的安全 ID,而不是直接调用它的对象的安全 ID。

以下方案演示 了 GetDirectCallerSID 方法的功能:

  • 在服务器 A 上运行的基本进程作为用户 A 调用以用户 B 身份运行的服务器 B 上的对象 X。然后,对象 X 调用在服务器 C 上运行的对象 Y。如果对象 Y 调用 GetDirectCallerSID,则返回用户 B 的安全 ID。
  • 作为用户 A 在服务器 A 上运行的基进程调用以用户 B 身份运行的服务器 B 上的对象 X。然后,对象 X 调用对象 Y,在与对象 X 相同的进程中运行,也在服务器 B 上运行。当对象 Y 调用 GetDirectCallerSID 时,将返回用户 A 的安全 ID,而不是用户 B 的安全 ID。
使用完安全 ID 后,必须对安全 ID 调用 ISecurityProperty::ReleaseSID

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 comsvcs.h

另请参阅

ISecurityProperty