iSecurityProperty::GetOriginalCallerSID 方法 (comsvcs.h)
检索启动调用序列(从中调用当前方法)的基本进程的安全标识符。
获取有关原始调用方的信息的首选方法是使用 ISecurityCallContext 接口。
语法
HRESULT GetOriginalCallerSID(
[out] PSID *pSID
);
参数
[out] pSID
对启动调用序列(从中调用当前方法)的基本进程的安全 ID 的引用。
返回值
此方法可以返回标准返回值 E_INVALIDARG、 E_OUTOFMEMORY、 E_UNEXPECTED和 E_FAIL,以及以下值。
返回代码 | 说明 |
---|---|
|
发起对当前对象的调用的基本进程的安全 ID 在参数 pSid 中返回。 |
|
当前对象没有与之关联的上下文,因为组件未导入到应用程序中,或者对象不是使用 COM+ CreateInstance 方法之一创建的。 |
注解
使用 GetOriginalCallerSID 方法可确定发起调用序列的原始进程的安全 ID,从中调用当前方法,而不是进程的发起方 (或创建者) 。 尽管指向对象的指针可以通过一系列服务器和用户传递,但 GetOriginalCallerSID 始终返回进程的第一个服务器和用户,即使该用户不是该对象的原始创建者也是如此。 以下方案演示 GetOriginalCallerSID 方法的功能。
- 在服务器 A 上以用户 A 身份运行的基本进程 1 在服务器 B 上创建对象 X,以用户 B 身份运行。
- 基本进程 1 将其对对象 X 的引用传递给在服务器 D 上运行的基进程 2 作为用户 D。
- 基本进程 2 使用该引用来调用对象 X。
- 对象 X 调用在服务器 C 上运行的对象 Y。如果 Object Y 随后调用 GetOriginalCallerSID,则返回用户 D 的安全 ID,而不是最初创建该对象的用户 A。
注意 通常,对象的原始调用方与其原始创建者的进程相同。 原始调用方和原始创建者不同的唯一情况是,原始创建者将引用传递给另一个进程,另一个进程启动调用序列 (,如前面的示例) 所示。
使用完安全 ID 后,必须对安全 ID 调用 ReleaseSID 。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | comsvcs.h |