Метод 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 |