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 |