Compartir a través de


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

El método IADsGroup::IsMember determina si un objeto de servicio de directorio es un miembro inmediato del grupo. Este método no comprueba la pertenencia a ningún grupo anidado.

Sintaxis

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

Parámetros

bstrMember

Contiene ADsPath del objeto de servicio de directorio para comprobar la pertenencia. Este ADsPath debe usar el mismo proveedor ADSI que se usa para enlazar con el grupo. Por ejemplo, si el grupo estaba enlazado al uso del proveedor LDAP, este ADsPath también debe usar el proveedor LDAP.

[out] bMember

Puntero a un valor de VARIANT_BOOL que recibe VARIANT_TRUE si el objeto es un miembro inmediato del grupo o VARIANT_FALSE de lo contrario.

Valor devuelto

Este método admite los valores devueltos estándar, incluidos los S_OK. Para obtener más información, consulta Códigos de error adsi.

Comentarios

Aunque puede agregar o quitar una entidad de seguridad a o desde un grupo mediante el SID de miembro a través del proveedor WinNT, el método IADsGroup.IsMember no admite el uso de un SID ADsPath para comprobar si un miembro pertenece a un grupo a través del proveedor WinNT.

El método IADsGroup::IsMember solo funcionará correctamente si el grupo y el objeto están en el mismo dominio. Si el objeto está en un dominio diferente al del grupo, IADsGroup::IsMember siempre devolverá VARIANT_FALSE.

Ejemplos

En el ejemplo de código siguiente se agrega el usuario "jeffsmith" al grupo "Administradores" en el dominio "Fabrikam" y, a continuación, se informa de que el usuario es ahora miembro del 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

En el ejemplo de código siguiente se comprueba que un usuario pertenece a un grupo antes de agregarlo al 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 Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado iads.h
Archivo DLL Activeds.dll

Consulte también

Códigos de error adsi

IADsGroup

Métodos de propiedad IADsGroup

IADsMembers