Partager via


IADsGroup ::IsMember, méthode (iads.h)

La méthode IADsGroup ::IsMember détermine si un objet de service d’annuaire est un membre immédiat du groupe. Cette méthode ne vérifie pas l’appartenance à des groupes imbriqués.

Syntaxe

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

Paramètres

bstrMember

Contient l’ADsPath de l’objet de service d’annuaire pour vérifier l’appartenance. Cet ADsPath doit utiliser le même fournisseur ADSI que celui utilisé pour la liaison au groupe. Par exemple, si le groupe était lié à l’utilisation du fournisseur LDAP, cet ADsPath doit également utiliser le fournisseur LDAP.

[out] bMember

Pointeur vers une valeur de VARIANT_BOOL qui reçoit VARIANT_TRUE si l’objet est un membre immédiat du groupe ou VARIANT_FALSE sinon.

Valeur retournée

Cette méthode prend en charge les valeurs de retour standard, y compris les S_OK. Pour plus d’informations, consultez Codes d’erreur ADSI.

Remarques

Bien que vous puissiez ajouter ou supprimer un principal de sécurité dans ou à partir d’un groupe à l’aide du SID membre via le fournisseur WinNT, la méthode IADsGroup.IsMember ne prend pas en charge l’utilisation d’un ADsPath SID pour la vérification si un membre appartient à un groupe via le fournisseur WinNT.

La méthode IADsGroup ::IsMember ne fonctionnera correctement que si le groupe et l’objet se trouvent dans le même domaine. Si l’objet se trouve dans un domaine différent du groupe, IADsGroup ::IsMember retourne toujours VARIANT_FALSE.

Exemples

L’exemple de code suivant ajoute l’utilisateur « jeffsmith » au groupe « Administrateurs » sur le domaine « Fabrikam », puis indique que l’utilisateur est désormais membre du groupe.

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

L’exemple de code suivant vérifie qu’un utilisateur appartient à un groupe avant de l’ajouter au groupe.

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;

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008
Plateforme cible Windows
En-tête iads.h
DLL Activeds.dll

Voir aussi

Codes d’erreur ADSI

IADsGroup

IADsGroup, méthodes de propriété

IADsMembers