确定是否启用了基于角色的安全性

通过使用在安全调用上下文对象中提供的 ISecurityCallContext::IsSecurityEnabled 方法,可以确定是否为当前对象启用了安全性。 在使用 ISecurityCallContext::IsCallerInRole 之前,应调用 IsSecurityEnabled 来检查角色成员身份,因为如果未启用安全性,IsCallerInRole 将返回 True。

Microsoft Visual Basic 开发人员会调用 GetSecurityCallContext,以获取对 SecurityCallContext 对象的引用,然后调用 IsSecurityEnabled,如以下示例所示:

Dim objSecCallCtx As SecurityCallContext
Dim boolSecEn As Boolean
Set objSecCallCtx = GetSecurityCallContext()
boolSecEn = objSecCallCtx.IsSecurityEnabled()
 

Microsoft Visual C++ 开发人员可以调用 CoGetCallContext,以获取指向 ISecurityCallContext 的指针,然后调用 IsSecurityEnabled,籍此调用 ISecurityCallContext::IsSecurityEnabled。 下面是一个简短的示例:

ISecurityCallContext* pSecCtx;
VARIANT_BOOL bIsEnabled;

HRESULT hr1 = CoGetCallContext(IID_ISecurityCallContext, (void**)&pSecCtx);
if (FAILED(hr1)) throw(hr1);
if (NULL == pSecCtx) {
    // Display error message.
    return E_FAIL;
}

HRESULT hr2 = pSecCtx->IsSecurityEnabled(&bIsEnabled);
return hr2;

尽管调用 IsSecurityEnabled 的首选方法是使用安全调用上下文对象,但也可以通过对象上下文调用 IsSecurityEnabled。 (有关详细信息,请参阅 ObjectContextIObjectContext

访问安全调用上下文信息

检查角色成员身份

编程组件安全性