ISecurityProperty::GetDirectCallerSID 方法 (comsvcs.h)
检索调用当前正在执行方法的外部进程的安全标识符。 还可以使用 ISecurityCallContext 获取此信息。
语法
HRESULT GetDirectCallerSID(
[out] PSID *pSID
);
参数
[out] pSID
对从中调用当前方法的进程的安全 ID 的引用。
返回值
此方法可以返回标准返回值E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED和E_FAIL,以及以下值。
返回代码 | 说明 |
---|---|
|
调用当前方法的进程的安全 ID 在参数 pSid 中返回。 |
|
当前对象没有与之关联的上下文,因为组件未导入应用程序,或者对象不是使用 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。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | comsvcs.h |