Condividi tramite


Metodo IADsGroup::IsMember (iads.h)

Il metodo IADsGroup::IsMember determina se un oggetto del servizio directory è un membro immediato del gruppo. Questo metodo non verifica l'appartenenza a gruppi annidati.

Sintassi

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

Parametri

bstrMember

Contiene l'oggetto ADsPath dell'oggetto del servizio directory per verificare l'appartenenza. Questo ADsPath deve usare lo stesso provider ADSI usato per eseguire l'associazione al gruppo. Ad esempio, se il gruppo è stato associato all'uso del provider LDAP, questo ADsPath deve usare anche il provider LDAP.

[out] bMember

Puntatore a un valore VARIANT_BOOL che riceve VARIANT_TRUE se l'oggetto è un membro immediato del gruppo o VARIANT_FALSE in caso contrario.

Valore restituito

Questo metodo supporta i valori restituiti standard, inclusi i S_OK. Per altre informazioni, vedere Codici di errore ADSI.

Commenti

Anche se è possibile aggiungere o rimuovere un'entità di sicurezza da o a un gruppo usando il SID membro tramite il provider WinNT, il metodo IADsGroup.IsMember non supporta l'uso di un SID ADsPath per la verifica se un membro appartiene a un gruppo tramite il provider WinNT.

Il metodo IADsGroup::IsMember funzionerà correttamente solo se il gruppo e l'oggetto si trovano nello stesso dominio. Se l'oggetto si trova in un dominio diverso rispetto al gruppo, IADsGroup::IsMember restituirà sempre VARIANT_FALSE.

Esempio

L'esempio di codice seguente aggiunge l'utente "jeffsmith" al gruppo "Administrators" nel dominio "Fabrikam" e quindi segnala che l'utente è ora un membro del gruppo.

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

Nell'esempio di codice seguente viene verificato che un utente appartiene a un gruppo prima di aggiungerlo al gruppo.

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;

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Server minimo supportato Windows Server 2008
Piattaforma di destinazione Windows
Intestazione iads.h
DLL Activeds.dll

Vedi anche

Codici di errore ADSI

IADsGroup

Metodi di proprietà IADsGroup

IADsMembers