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 einen Benutzer zum lokalen System und eine Gruppe in Visual C# hinzuzufügen.
Originalversion des Produkts: Visual C #
Ursprüngliche KB-Nummer: 306273
Zusammenfassung
In diesem Schritt-für-Schritt-Artikel erfahren Sie, wie Sie den DirectoryServices Namespace verwenden, um einen Benutzer zum lokalen System und zu einer Gruppe hinzuzufügen.
Erstellen des Beispiels
Starten Sie Visual Studio .NET 2003, Visual Studio 2005 oder Visual Studio 2008, und erstellen Sie dann ein neues Visual C#-Konsolenanwendungsprojekt.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Verweise, und klicken Sie dann auf Verweis hinzufügen.
Fügen Sie einen Verweis auf die
System.DirectoryServices.dllAssembly hinzu.Ersetzen Sie den Code in der Datei "Class1.cs " durch den folgenden Code.
Hinweis
In Visual C# 2005 oder Visual C# 2008 wird die Datei "Class1.cs " durch die Datei "Program.cs " 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(); } } }Kompilieren Sie das Projekt, und führen Sie es dann aus.
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:
- Zeigen Sie im Startmenü auf "Programme", zeigen Sie auf "Verwaltungstools", und klicken Sie dann auf "Computerverwaltung".
- 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:
- Klicken Sie im Startmenü auf Systemsteuerung.
- 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 die Tests 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 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 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 CommitChanges Methode zum Speichern der Ä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:
- Definieren Sie eine Variable vom Typ
DirectoryEntry. - Rufen Sie die
FindMethode desChildrenElements derActiveDirectoryKlasse auf, um die Variable aufzufüllen. In diesem Fall ist die Gastgruppe das Ziel der Suche. Dieser Code testet den Wert, den dieFindMethode 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, die es dem Benutzer ermöglichen, Benutzerkonten zu erstellen.