Condividi tramite


Enumerazione di gruppi in un dominio

I gruppi possono essere inseriti in qualsiasi contenitore o unità organizzativa (OU) in un dominio e nella radice del dominio. Ciò significa che i gruppi possono trovarsi in numerose posizioni nella gerarchia di directory. Di conseguenza, sono disponibili due opzioni per l'enumerazione dei gruppi:

  1. Enumerare i gruppi direttamente contenuti in un contenitore, un'unità organizzativa o nella radice del dominio.

    Associare in modo esplicito all'oggetto contenitore che contiene i gruppi da enumerare, impostare un filtro contenente "gruppi" come classe usando la proprietà IADsContainer.Filter e usare il metodo IADsContainer::get__NewEnum per enumerare gli oggetti gruppo.

    Questa tecnica enumera i gruppi contenuti direttamente in un contenitore o in un oggetto ou. Se il contenitore contiene altri contenitori che possono potenzialmente contenere altri gruppi, è necessario eseguire l'associazione a tali contenitori ed enumerare in modo ricorsivo i gruppi in tali contenitori. Per modificare gli oggetti gruppo e leggere solo proprietà specifiche, usare la ricerca approfondita descritta nell'opzione 2.

    Poiché l'enumerazione restituisce puntatori agli oggetti COM ADSI che rappresentano ogni oggetto gruppo, è possibile chiamare QueryInterface per ottenere ID, IADsGroup e puntatori all'interfaccia IADsPropertyList all'oggetto gruppo, ovvero è possibile ottenere puntatori di interfaccia a ogni oggetto gruppo enumerato in un contenitore senza dover associare in modo esplicito a ogni oggetto gruppo. Per eseguire operazioni su tutti i gruppi direttamente all'interno di un contenitore, l'enumerazione non richiede l'associazione a ogni gruppo per chiamare i metodi IADs o IADsGroup . Per recuperare proprietà specifiche dai gruppi, usare IDirectorySearch come descritto nella seconda opzione.

    Un'eccezione a questa situazione si verifica quando si tenta di enumerare un gruppo che contiene membri che sono entità di sicurezza ben definite, ad esempio Tutti, Utenti autenticati, BATCH e così via. Poiché non è possibile eseguire l'associazione a questi tipi di oggetti, non vengono elencati quando si enumera i gruppi nell'ambito WinNT, anche se potrebbe sembrare di associare, perché alcuni metodi IAD, ad esempio Class, ADsPath e Name restituiscono risultati corretti quando vengono richiamati sui membri enumerati.

  2. Eseguire una ricerca approfondita per "objectCategory=group" per trovare tutti i gruppi in un albero.

    Prima di tutto, eseguire l'associazione all'oggetto contenitore in cui iniziare la ricerca. Ad esempio, per trovare tutti i gruppi in un dominio, eseguire l'associazione alla radice del dominio; per trovare tutti i gruppi nella foresta, eseguire l'associazione al catalogo globale e eseguire ricerche dalla radice del catalogo globale.

    Usare quindi IDirectorySearch per eseguire query usando un filtro di ricerca contenente (objectCategory=group) e la preferenza di ricerca di ADS_SCOPE_SUBTRedizione Enterprise.

    Nota

    È possibile eseguire una ricerca con una preferenza di ricerca di ADS_SCOPE_ONELEVEL per limitare la ricerca al contenuto diretto dell'oggetto contenitore a cui si è associato.

     

    IDirectorySearch recupera solo i valori di proprietà specifiche dai gruppi. Per recuperare i valori, usare IDirectorySearch. Per modificare gli oggetti gruppo restituiti da una ricerca, vale a dire usare metodi IAD o IADsGroup, associarli in modo esplicito. A tale scopo, specificare distinguishedName come una delle proprietà da restituire dalla ricerca e usare i nomi distinti restituiti per eseguire il binding a ogni gruppo restituito nella ricerca.

    Vengono recuperate solo proprietà specifiche. Non è possibile recuperare tutti gli attributi senza specificare in modo esplicito ogni attributo possibile della classe di gruppo.