Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nelle procedure di questa sezione viene illustrato come utilizzare DirectoryEntry per elencare gli utenti, i gruppi e i servizi che si trovano sul computer locale. DirectoryEntry utilizza la tecnologia Servizi di dominio Active Directory per accedere a queste informazioni. Ogni voce creata dal componente contiene un elenco delle proprietà relative.
Per creare l'interfaccia utente
Scegliere Nuovo dal menu File, quindi scegliere Progetto.
Nella finestra di dialogo Nuovo progetto, nel riquadro sinistro, scegliere Visual Basic .NET, Visual C# o Visual J#, quindi scegliere il modello Applicazione Windows. Denominare il progetto ActiveDirectory.
Nella scheda Windows Form della casella degli strumenti, trascinare un controllo TreeView su Form1.
Impostare la proprietà Name del controllo TreeView su "viewPC". Il controllo TreeView verrà modificato successivamente nella procedura dettagliata, in modo che contenga tre nodi di primo livello, uno per gli utenti, uno per i gruppi e uno per i servizi. Ogni nodo di livello secondario rappresenterà un utente, un gruppo o un servizio registrato sul computer. Ogni utente, gruppo e servizio avrà due nodi figlio, uno per il percorso di Servizi di dominio Active Directory e uno per le proprietà relative.
Per configurare un componente DirectoryEntry
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto, quindi scegliere Aggiungi riferimento nel menu di scelta rapida.
Aggiungere un riferimento a "System.DirectoryServices.dll".
Dalla scheda Componenti della casella degli strumenti, trascinare un componente DirectoryEntry nella finestra di progettazione.
Impostare la proprietà Name del componente DirectoryEntry su "entryPC".
Impostare la proprietà Path del componente DirectoryEntry su WinNT://Dominio/NomeComputerInUso. Utilizzare il dominio e il nome computer in uso per indicare al componente DirectoryEntry di esaminare il computer locale utilizzando il provider di servizi WinNT per Servizi di dominio Active Directory.
Nota:Se si utilizza un dominio o un nome computer non corretti, l'applicazione genererà un'eccezione in fase di esecuzione. Se si immette WinNT://NomeComputerInUso per il percorso, il provider di servizi tenterà di individuare il computer.
Per aggiungere nodi di primo livello al controllo TreeView
Nella finestra di progettazione fare doppio clic su Form1 per creare il gestore eventi Form_Load nell'editor di codice.
Modificare il metodo Form1_Load aggiungendo il codice necessario a creare i tre nodi di primo livello per utenti, gruppi e servizi. Quando l'applicazione viene eseguita, la proprietà Children del componente chiamato entryPC conterrà tutte le voci trovate in Path (il computer in uso). Ogni elemento figlio è anche un oggetto DirectoryEntry. Poiché si sta utilizzando il provider WinNT in un percorso di computer, la proprietà SchemaClassName dell'oggetto figlio DirectoryEntry sarà "User", "Group" o "Service". Utilizzare un'istruzione select o switch per aggiungere un nodo al gruppo corretto, a seconda del tipo di voce di directory indicato dalla proprietà SchemaClassName.
Nel prossimo passaggio verrà scritto il metodo AddPathAndProperties.
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Dim users As New TreeNode("Users") Dim groups As New TreeNode("Groups") Dim services As New TreeNode("Services") viewPC.Nodes.AddRange(New TreeNode() {users, groups, services}) Dim child As System.DirectoryServices.DirectoryEntry For Each child In entryPC.Children Dim newNode As New TreeNode(child.Name) Select Case child.SchemaClassName Case "User" users.Nodes.Add(newNode) Case "Group" groups.Nodes.Add(newNode) Case "Service" services.Nodes.Add(newNode) End Select AddPathAndProperties(newNode, child) Next End Subprivate void Form1_Load(object sender, System.EventArgs e) { TreeNode users = new TreeNode("Users"); TreeNode groups = new TreeNode("Groups"); TreeNode services = new TreeNode("Services"); viewPC.Nodes.AddRange(new TreeNode[] { users, groups, services }); foreach(System.DirectoryServices.DirectoryEntry child in entryPC.Children) { TreeNode newNode = new TreeNode(child.Name); switch (child.SchemaClassName) { case "User" : users.Nodes.Add(newNode); break; case "Group" : groups.Nodes.Add(newNode); break; case "Service" : services.Nodes.Add(newNode); break; } AddPathAndProperties(newNode, child); } }Aggiungere il codice seguente alla classe Form1 per creare il metodo AddPathAndProperties. Il parametro node rappresenta l'oggetto TreeNode associato a quella voce. Il parametro entry rappresenta una voce nella directory corrispondente a un utente, un gruppo o un servizio.
Il componente DirectoryEntry dispone di una proprietà Properties che contiene un insieme di proprietà indicizzato per stringa. Il contenuto di questo insieme dipende dallo schema del componente DirectoryEntry. L'insieme Properties dispone di una proprietà PropertyNames che è un insieme di tutti i nomi delle proprietà. Scorrendo questo insieme è possibile recuperare ogni proprietà. Ogni proprietà ha anche un insieme di valori associati. In questo metodo, viene recuperato solo il primo valore per ogni proprietà.
Private Sub AddPathAndProperties(ByVal node As TreeNode, _ ByVal entry As System.DirectoryServices.DirectoryEntry) node.Nodes.Add(New TreeNode("Path: " & entry.Path)) Dim propertyNode As New TreeNode("Properties") node.Nodes.Add(propertyNode) Dim propertyName As String Dim oneNode As String For Each propertyName In entry.Properties.PropertyNames Try oneNode = propertyName & ": " & _ CType(entry.Properties(propertyName)(0), String) Catch oneNode = propertyName & ": " & _ "No text representation." End Try propertyNode.Nodes.Add(New TreeNode(oneNode)) Next End Subprivate void AddPathAndProperties(TreeNode node, System.DirectoryServices.DirectoryEntry entry) { node.Nodes.Add(new TreeNode("Path: " + entry.Path)); TreeNode propertyNode = new TreeNode("Properties"); node.Nodes.Add(propertyNode); foreach (string propertyName in entry.Properties.PropertyNames) { string oneNode = propertyName + ": " + entry.Properties[propertyName][0].ToString(); propertyNode.Nodes.Add(new TreeNode(oneNode)); } }
Per eseguire il programma
Premere F5 per eseguire il programma.
Aprire i nodi per esaminare i percorsi e le proprietà. Tutti gli utenti condividono lo stesso insieme di proprietà perché condividono tutti lo stesso schema. Lo stesso vale per i nodi gruppo e servizio.
In questa procedura dettagliata è stato utilizzato il provider di servizi WinNT per Servizi di dominio Active Directory. Sono disponibili altri servizi, compresi LDAP (Lightweight Directory Access Protocol), NDS (Novell NetWare Directory Service) e NWCOMPAT (Novell Netware 3.x). Ogni provider fornisce un insieme diverso di oggetti che consentono di esaminare e modificare le directory.
È possibile utilizzare DirectorySearcher per cercare le voci da un percorso radice. DirectorySearcher funziona con il provider LDAP.
Vedere anche
Riferimenti
System.DirectoryServices
DirectoryEntry
DirectorySearcher
Concetti
Introduzione a System.DirectoryServices
Send comments about this topic to Microsoft.
Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.