Hinzufügen eines Benutzers zum lokalen System mithilfe von Verzeichnisdiensten und Visual C sharp

In diesem Artikel wird beschrieben, wie Sie den DirectoryServices Namespace verwenden, um dem lokalen System und einer Gruppe in Visual C# einen Benutzer hinzuzufügen.

Originalproduktversion: Visual C#
Ursprüngliche KB-Nummer: 306273

Zusammenfassung

In diesem schrittweisen Artikel wird erläutert, wie Sie den DirectoryServices Namespace verwenden, um dem lokalen System und einer Gruppe einen Benutzer hinzuzufügen.

Erstellen des Beispiels

  1. Starten Sie Visual Studio .NET 2003, Visual Studio 2005 oder Visual Studio 2008, und erstellen Sie dann ein neues Visual C#-Konsolenanwendungsprojekt.

  2. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf Verweise, und klicken Sie dann auf "Verweis hinzufügen".

  3. Fügen Sie einen Verweis auf die System.DirectoryServices.dll Assembly hinzu.

  4. Ersetzen Sie den Code in der datei Class1.cs durch den folgenden Code.

    Notiz

    In Visual C# 2005 oder Visual C# 2008 wird die Class1.cs Datei durch die Program.cs-Datei ersetzt.

    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. Kompilieren Sie das Projekt, und führen Sie es aus.

  6. Führen Sie die folgenden Schritte auf einem Windows 2000-basierten Computer aus, um zu überprüfen, ob das Konto erstellt und der Gastgruppe hinzugefügt wurde:

    1. Zeigen Sie im Startmenü auf "Programme", zeigen Sie auf "Verwaltungstools", und klicken Sie dann auf "Computerverwaltung".
    2. Klicken Sie, um den Knoten "Lokale Benutzer und Gruppen " zu erweitern. Das neue Konto sollte unter dem Knoten "Benutzer" sowie unter dem Knoten für die Gastgruppe angezeigt werden.

    Führen Sie die folgenden Schritte auf einem Windows XP-basierten Computer aus, um zu überprüfen, ob das Konto erstellt und der Gastgruppe hinzugefügt wurde:

    1. Klicken Sie im Menü Start auf Systemsteuerung.
    2. Doppelklicken Sie auf Benutzerkonten. Das neue Benutzerkonto sollte im Dialogfeld "Benutzerkonten " angezeigt werden.

    Wichtig

    Entfernen Sie das neu erstellte Benutzerkonto aus dem System, nachdem Sie den Test abgeschlossen haben.

Erstellen eines neuen Verzeichniseintrags

Wenn Sie den Verzeichniseintrag in diesem Beispiel erstellen, wird davon ausgegangen, dass das System Windows NT, Windows 2000 oder Windows XP ausführt.

Notiz

Die an den DirectoryEntry Konstruktor übergebene Zeichenfolge beginnt mit "WinNT://". Sie können verzeichnisdienste auch auf anderen Betriebssystemen von Drittanbietern ausführen.

DirectoryEntry AD = new DirectoryEntry("WinNT://" + SystemInformation.ComputerName + ",computer");

Hinzufügen des Verzeichniseintrags zur Verzeichnisstruktur

Der folgende Code fügt einen DirectoryEntry Typbenutzer mit dem Wert der TestUser1 Active Directory-Struktur hinzu.

DirectoryEntry NewUser = AD.Children.Add("TestUser1", "user");

Festlegen des Kennworts und der Beschreibung für das neue Benutzerkonto

Der folgende Code ruft die Invoke-Methode auf, um die SetPassword Methoden Put des DirectoryEntry Objekts aufzurufen. Dadurch wird das Kennwort festgelegt und dem Benutzerkonto eine Beschreibung zugewiesen. Dieser Code ruft auch die Methode zum Speichern der CommitChanges Änderungen auf.

NewUser.Invoke("SetPassword", new object[] {"#12345Abc"});
NewUser.Invoke("Put", new object[] {"Description", "Test User from .NET"});
NewUser.CommitChanges();

Hinzufügen des Kontos zu einer Gruppe

Führen Sie die folgenden Schritte aus, um das Konto zu einer Gruppe hinzuzufügen:

  1. Definieren sie eine Variable vom Typ DirectoryEntry.
  2. Rufen Sie die Find Methode des Children Elements der ActiveDirectory Klasse auf, um die Variable aufzufüllen. In diesem Fall ist die Gastgruppe das Ziel der Suche. Dieser Code testet den Wert, den die Find Methode zurückgibt, um festzustellen, ob die Gruppe gefunden wurde. Wenn die Gruppe gefunden wird, wird das neue Benutzerkonto der Gruppe hinzugefügt.
DirectoryEntry grp;
grp = AD.Children.Find("Guests", "group");
if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}

Problembehandlung

Der Code in diesem Artikel schlägt fehl, wenn Sie versuchen, den Code ohne ausreichende Berechtigungen zum Erstellen eines Benutzerkontos auszuführen. Damit der Code erfolgreich abgeschlossen werden kann, muss der aktuell angemeldete Benutzer Mitglied der Gruppe "Administratoren" sein oder über bestimmte Berechtigungen verfügen, mit denen der Benutzer Benutzerkonten erstellen kann.