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 einen Benutzer und eine Gruppe in Visual C# hinzuzufügen.

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

Zusammenfassung

In diesem Schritt-für-Schritt-Artikel erfahren Sie, 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 im 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 Class1.cs-Datei durch den folgenden Code.

    Hinweis

    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 dann 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 Verwaltung, und klicken Sie dann auf Computerverwaltung.
    2. Klicken Sie hier, um den Knoten Lokale Benutzer und Gruppen zu erweitern. Das neue Konto sollte sowohl unter dem Knoten Benutzer als auch unter dem Knoten für die Gruppe Gast 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 Startmenü 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 auf dem System Windows NT, Windows 2000 oder Windows XP ausgeführt wird.

Hinweis

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 der Active Directory-Struktur einen DirectoryEntry vom Typ user mit dem Wert von TestUser1 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 und Put des DirectoryEntry -Objekts aufzurufen. Dadurch wird das Kennwort festgelegt und dem Benutzerkonto eine Beschreibung zugewiesen. Dieser Code ruft auch die CommitChanges -Methode auf, um die Änderungen zu speichern.

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 einer Gruppe hinzuzufügen:

  1. Definieren Sie eine Variable vom Typ DirectoryEntry.
  2. Rufen Sie die Find -Methode des Children Members 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 der Gruppe das neue Benutzerkonto 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 die erforderlichen 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, die es dem Benutzer ermöglichen, Benutzerkonten zu erstellen.