Определение включения безопасности на основе ролей
Используя метод 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++ могут вызывать ISecurityCallContext::IsSecurityEnabled, вызвав CoGetCallContext, чтобы получить указатель на 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 через контекст объекта. (См. раздел ObjectContext или IObjectContext для получения дополнительных сведений.)
См. также