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 |