IADsGroup::IsMember-Methode (iads.h)

Die IADsGroup::IsMember-Methode bestimmt, ob ein Verzeichnisdienstobjekt ein unmittelbares Mitglied der Gruppe ist. Diese Methode überprüft nicht die Mitgliedschaft in geschachtelten Gruppen.

Syntax

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

Parameter

bstrMember

Enthält den ADsPath des Verzeichnisdienstobjekts zum Überprüfen der Mitgliedschaft. Dieser ADsPath muss denselben ADSI-Anbieter verwenden, der zum Binden an die Gruppe verwendet wurde. Wenn die Gruppe beispielsweise an den LDAP-Anbieter gebunden war, muss dieser ADsPath auch den LDAP-Anbieter verwenden.

[out] bMember

Zeiger auf einen VARIANT_BOOL Wert, der VARIANT_TRUE empfängt, wenn das Objekt ein unmittelbares Mitglied der Gruppe ist oder andernfalls VARIANT_FALSE .

Rückgabewert

Diese Methode unterstützt die Standardrückgabewerte, einschließlich S_OK. Weitere Informationen finden Sie unter ADSI-Fehlercodes.

Hinweise

Obwohl Sie mithilfe der Member-SID über den WinNT-Anbieter einen Sicherheitsprinzipal zu oder aus einer Gruppe hinzufügen oder daraus entfernen können, unterstützt die IADsGroup.IsMember-Methode die Verwendung eines SID-ADsPath zur Überprüfung nicht, wenn ein Mitglied über den WinNT-Anbieter zu einer Gruppe gehört.

Die IADsGroup::IsMember-Methode funktioniert nur ordnungsgemäß, wenn sich die Gruppe und das Objekt in derselben Domäne befinden. Wenn sich das Objekt in einer anderen Domäne als die Gruppe befindet, gibt IADsGroup::IsMember immer VARIANT_FALSE zurück.

Beispiele

Im folgenden Codebeispiel wird der Benutzer "jeffsmith" der Gruppe "Administratoren" in der Domäne "Fabrikam" hinzugefügt und dann gemeldet, dass der Benutzer jetzt Mitglied der Gruppe ist.

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

Im folgenden Codebeispiel wird überprüft, ob ein Benutzer zu einer Gruppe gehört, bevor er der Gruppe hinzugefügt wird.

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;

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Zielplattform Windows
Kopfzeile iads.h
DLL Activeds.dll

Weitere Informationen

ADSI-Fehlercodes

IADsGroup

Methoden der IADsGroup-Eigenschaft

IADsMembers