Поделиться через


Метод IADsGroup::IsMember (iads.h)

Метод IADsGroup::IsMember определяет, является ли объект службы каталогов непосредственным членом группы. Этот метод не проверяет членство во вложенных группах.

Синтаксис

HRESULT IsMember(
        BSTR         bstrMember,
  [out] VARIANT_BOOL *bMember
);

Параметры

bstrMember

Содержит ADsPath объекта службы каталогов для проверки членства. Этот ADsPath должен использовать тот же поставщик ADSI, который использовался для привязки к группе. Например, если группа была привязана с помощью поставщика LDAP, этот ADsPath также должен использовать поставщик LDAP.

[out] bMember

Указатель на значение VARIANT_BOOL , которое получает VARIANT_TRUE , является ли объект непосредственным членом группы или VARIANT_FALSE в противном случае.

Возвращаемое значение

Этот метод поддерживает стандартные возвращаемые значения, включая S_OK. Дополнительные сведения см. в разделе Коды ошибок ADSI.

Комментарии

Хотя вы можете добавить или удалить субъект безопасности в группу или из нее с помощью идентификатора безопасности участника через поставщик WinNT, метод IADsGroup.IsMember не поддерживает использование ИДЕНТИФИКАТОРА БЕЗОПАСНОСТИ ADsPath для проверки того, принадлежит ли участник к группе через поставщик WinNT.

Метод IADsGroup::IsMember будет работать правильно, только если группа и объект находятся в одном домене. Если объект находится в домене, отличном от домена группы, IADsGroup::IsMember всегда будет возвращать VARIANT_FALSE.

Примеры

В следующем примере кода пользователь jeffsmith добавляется в группу "Администраторы" в домене Fabrikam, а затем сообщается, что пользователь теперь является членом группы.

Dim grp As IADsGroup
On Error GoTo Cleanup

Set grp = GetObject("WinNT://Microsoft/Administrators")
grp.Add ("WinNT://Fabrikam/jeffsmith")
Debug.Print grp.IsMember("WinNT://Fabrikam/jeffsmith ") ' Should be TRUE.

Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If
    Set grp = Nothing

В следующем примере кода проверяется, принадлежит ли пользователь группе, прежде чем добавлять его в группу.

IADsGroup *pGroup = NULL;
HRESULT hr = S_OK;
LPWSTR adsPath = L"WinNT://Fabrikam/Administrators";
BSTR bstr = NULL;

hr = ADsGetObject(adsPath, IID_IADsGroup, (void**)&pGroup);

if(FAILED(hr))
{
    goto Cleanup;
}

hr = pGroup->get_Description(&bstr);
if(FAILED(hr))
{
    goto Cleanup;
}

printf("Description: %S\n",bstr);
SysFreeString(bstr);

VARIANT_BOOL inG=false;
hr = pGroup->IsMember(CComBSTR("WinNT://Microsoft/SecUser"), &inG);

if (inG ) 
{
    printf("already in the group.\n");
}
else 
{
    hr = pGroup->Add(CComBSTR("WinNT://Microsoft/SecUser"));
    if(FAILED(hr))
    {
        goto Cleanup;
    }

    printf("user added.\n");
}

Cleanup:
if(pGroup)
{
    pGroup->Release();
}
if(bstr)
{
    SysFreeString(bstr);
}

return hr;

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Минимальная версия сервера Windows Server 2008
Целевая платформа Windows
Header iads.h
DLL Activeds.dll

См. также раздел

Коды ошибок ADSI

IADsGroup

Методы свойств IADsGroup

IADsMembers