Compartilhar via


Método IADsGroup::IsMember (iads.h)

O método IADsGroup::IsMember determina se um objeto de serviço de diretório é um membro imediato do grupo. Esse método não verifica a associação em nenhum grupo aninhado.

Sintaxe

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

Parâmetros

bstrMember

Contém o ADsPath do objeto de serviço de diretório para verificar a associação. Esse ADsPath deve usar o mesmo provedor ADSI usado para associar ao grupo. Por exemplo, se o grupo tiver sido obrigado a usar o provedor LDAP, esse ADsPath também deverá usar o provedor LDAP.

[out] bMember

Ponteiro para um valor VARIANT_BOOL que recebe VARIANT_TRUE se o objeto for um membro imediato do grupo ou VARIANT_FALSE caso contrário.

Retornar valor

Esse método dá suporte aos valores retornados padrão, incluindo S_OK. Para obter mais informações, consulte Códigos de erro ADSI.

Comentários

Embora você possa adicionar ou remover uma entidade de segurança de ou para um grupo usando o SID membro por meio do provedor WinNT, o método IADsGroup.IsMember não dá suporte ao uso de um SID ADsPath para verificação se um membro pertencer a um grupo por meio do provedor WinNT.

O método IADsGroup::IsMember só funcionará corretamente se o grupo e o objeto estiverem no mesmo domínio. Se o objeto estiver em um domínio diferente do grupo, IADsGroup::IsMember sempre retornará VARIANT_FALSE.

Exemplos

O exemplo de código a seguir adiciona o usuário "jeffsmith" ao grupo "Administradores" no domínio "Fabrikam" e, em seguida, relata que o usuário agora é membro do grupo.

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

O exemplo de código a seguir verifica se um usuário pertence a um grupo antes de adicioná-lo ao grupo.

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;

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008
Plataforma de Destino Windows
Cabeçalho iads.h
DLL Activeds.dll

Confira também

Códigos de erro ADSI

IADsGroup

Métodos de propriedade IADsGroup

IADsMembers