HOW TO: Aggiungere un utente al sistema locale utilizzando servizi di elenchi in linea e Visual C# .NET


Per la versione di questo articolo relativa a Microsoft Visual Basic .NET vedere (gli articoli con prefisso "Q" contengono informazioni in inglese): 306271 .

Sommario

In questo articolo viene descritto come utilizzare lo spazio dei nomi
DirectoryServices
per aggiungere un utente al sistema locale e a un gruppo.


Requisiti

  • Microsoft Windows XP, Windows 2000 o Windows NT 4.0
  • Visual C# .NET

Creazione del codice di esempio

  1. Avviare Microsoft Visual Studio .NET e creare un nuovo progetto applicazione console di Visual C#.
  2. In Esplora soluzioni fare clic con il pulsante destro del mouse su
    Riferimenti, quindi scegliere
    Aggiungi riferimento.
  3. Aggiungere un riferimento all'assembly
    System.DirectoryServices.dll.
  4. Sostituire il codice presente in Class1 con quello riportato di seguito:
    using System;
    using System.DirectoryServices;

    class Class1
    {
    static void Main(string[] args)
    {
    try
    {
    DirectoryEntry AD = new DirectoryEntry("WinNT://" +
    Environment.MachineName + ",computer");
    DirectoryEntry NewUser = AD.Children.Add("TestUser1", "user");
    NewUser.Invoke("SetPassword", new object[] {"#12345Abc"});
    NewUser.Invoke("Put", new object[] {"Description", "Test User from .NET"});
    NewUser.CommitChanges();
    DirectoryEntry grp;

    grp = AD.Children.Find("Guests", "group");
    if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}
    Console.WriteLine("Account Created Successfully");
    Console.ReadLine();
    }
    catch (Exception ex)
    {
    Console.WriteLine(ex.Message);
    Console.ReadLine();

    }
    }
    }
  5. Compilare ed eseguire il progetto.
  6. Eseguire la procedura descritta di seguito in un computer su cui è in esecuzione Windows 2000 per verificare che l'account sia stato creato e aggiunto al gruppo Guest:


    1. Fare clic sul pulsante
      Start, scegliere
      Impostazioni, Pannello di controllo,
      Strumenti di amministrazione
      e infine
      Gestione computer.
    2. Fare clic per espandere il nodo
      Utenti e gruppi locali. Il nuovo account dovrebbe essere visualizzato nel nodo
      Users
      e nel nodo del gruppo
      Guest.
    Eseguire la procedura descritta di seguito in un computer basato su Windows XP per verificare che l'account sia stato creato e aggiunto al gruppo Guest:
    1. Fare clic sul pulsante
      Start, scegliere
      Pannello di controllo.
    2. Fare doppio clic su
      Account utente. Il nuovo account dovrebbe essere visualizzato nella finestra di dialogo
      Account utente.
  7. È importante rimuovere l'account utente appena creato dal sistema una volta terminata la fase di verifica.

Spiegazione del codice

Creazione di una nuova voce di directory

Quando si crea la voce di directory in questo codice di esempio, si presuppone che sul sistema sia in esecuzione Microsoft Windows NT, Windows 2000 o Windows XP. È importante notare che la stringa che viene passata al costruttore
DirectoryEntry
inizia con "WinNT://". È anche possibile eseguire i servizi di elenchi in linea su un sistema operativo di terze parti.
DirectoryEntry AD = new DirectoryEntry("WinNT://" + SystemInformation.ComputerName + ",computer");

Aggiunta della voce di directory alla struttura delle directory

Il codice riportato di seguito aggiunge una
DirectoryEntry
di tipo
user
con valore
TestUser1
alla struttura
Active Directory.
DirectoryEntry NewUser = AD.Children.Add("TestUser1", "user");

Impostazione della password e della descrizione per il nuovo account utente

Il codice riportato di seguito chiama il metodo
Invoke
per invocare i metodi
SetPassword
e
Put
dell'oggetto
DirectoryEntry. Questo consente di impostare la password e assegnare una descrizione all'account utente. Questo codice consente anche di chiamare il metodo
CommitChanges
per salvare le modifiche.
NewUser.Invoke("SetPassword", new object[] {"#12345Abc"});
NewUser.Invoke("Put", new object[] {"Description", "Test User from .NET"});
NewUser.CommitChanges();

Aggiunta dell'account a un gruppo

La prima operazione da eseguire per aggiungere l'account a un gruppo consiste nel definire una variabile di tipo
DirectoryEntry. Chiamare quindi il metodo
Find
del membro
Children
della classe
ActiveDirectory
per popolare la variabile. In questo caso il gruppo Guest è l'obiettivo della ricerca. Questo codice verifica il valore restituito dal metodo
Find
per determinare se il gruppo è stato trovato. Se il gruppo viene trovato, il nuovo account utente viene aggiunto al gruppo.
DirectoryEntry grp;
grp = AD.Children.Find("Guests", "group");
if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}

Risoluzione dei problemi

Il codice riportato in questo articolo ha esito negativo se eseguito senza i privilegi sufficienti per creare un account utente. Affinché il codice venga completato correttamente, l'utente correntemente connesso deve essere un membro del gruppo Administrators oppure deve disporre di autorizzazioni speciali che gli consentano di creare account utente.


Proprietà

ID articolo: 306273 - Ultima revisione: 08 apr 2003 - Revisione: 1

Feedback