Enumerazione utenti
A differenza dei domini di Windows NT 4.0, gli utenti di Windows 2000 possono essere inseriti in qualsiasi contenitore o unità organizzativa (OU) in un dominio e nella radice del dominio. Ciò significa che gli utenti possono trovarsi in numerose posizioni nella gerarchia di directory. Di conseguenza, sono disponibili due opzioni per enumerare gli utenti:
Enumerare gli utenti direttamente contenuti in un contenitore, un'unità organizzativa o nella radice del dominio:
Associare in modo esplicito all'oggetto contenitore che contiene gli utenti interessati all'enumerazione, impostare un filtro contenente "utente" come classe usando la proprietà IADsContainer.Filter e usare il metodo IADsContainer::get__NewEnum per enumerare gli oggetti utente.
Questa tecnica può essere usata per enumerare gli utenti contenuti direttamente in un contenitore o in un oggetto ou. Se il contenitore contiene altri contenitori che possono contenere potenzialmente altri utenti, è necessario eseguire l'associazione a tali contenitori ed enumerare in modo ricorsivo gli utenti in tali contenitori. Se non è necessario modificare gli oggetti utente e solo leggere proprietà specifiche, usare la ricerca approfondita descritta nell'opzione 2.
Poiché l'enumerazione restituisce puntatori agli oggetti COM ADSI che rappresentano ogni oggetto utente, è possibile chiamare QueryInterface per ottenere puntatori all'oggetto utente tramite IADsUser e IADsPropertyList. Ciò significa che è possibile ottenere puntatori di interfaccia a ogni oggetto utente enumerato in un contenitore senza dover associare in modo esplicito a ogni oggetto utente. Per eseguire operazioni su tutti gli utenti direttamente all'interno di un contenitore, l'enumerazione evita di dover eseguire l'associazione a ogni utente per chiamare i metodi IAD o IADsUser . Per recuperare proprietà specifiche dagli utenti, usare IDirectorySearch come descritto nell'opzione 2.
Eseguire una ricerca approfondita per (&(objectClass=user)(objectCategory=person)) per trovare tutti gli utenti in un albero:
Prima di tutto, eseguire l'associazione all'oggetto contenitore in cui iniziare la ricerca. Ad esempio, per trovare tutti gli utenti in un dominio, eseguire l'associazione alla radice del dominio; per trovare tutti gli utenti nella foresta, eseguire il binding al catalogo globale e cercare dalla radice del catalogo globale.
Usare quindi IDirectorySearch per eseguire query usando un filtro di ricerca contenente (&(objectClass=user)(objectCategory=person)) e la preferenza di ricerca di ADS_SCOPE_SUBTRedizione Enterprise.
È 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 dagli utenti. Per recuperare i valori, usare IDirectorySearch. Per modificare gli oggetti utente restituiti da una ricerca, ovvero si desidera utilizzare i metodi IADs o IADsUser, è necessario 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 utente restituito nella ricerca.
Vengono recuperate solo proprietà specifiche. Non è possibile recuperare tutti gli attributi senza specificare in modo esplicito ogni attributo possibile della classe utente.