Dodawanie użytkownika do systemu lokalnego przy użyciu usług katalogowych i języka Visual C Sharp

W tym artykule opisano sposób używania przestrzeni nazw do dodawania użytkownika do systemu lokalnego i grupy w języku DirectoryServices Visual C#.

Oryginalna wersja produktu: Visual C#
Oryginalny numer KB: 306273

Podsumowanie

W tym artykule krok po kroku pokazano, jak za pomocą DirectoryServices przestrzeni nazw dodać użytkownika do systemu lokalnego i grupy.

Tworzenie przykładu

  1. Uruchom program Visual Studio .NET 2003, Visual Studio 2005 lub Visual Studio 2008, a następnie utwórz nowy projekt aplikacji konsolowej języka Visual C#.

  2. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy pozycję Odwołania, a następnie kliknij pozycję Dodaj odwołanie.

  3. Dodaj odwołanie do zestawu System.DirectoryServices.dll .

  4. Zastąp kod w pliku Class1.cs następującym kodem.

    Uwaga

    W programie Visual C# 2005 lub Visual C# 2008 plik Class1.cs jest zastępowany plikiem Program.cs .

    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. Skompiluj, a następnie uruchom projekt.

  6. Wykonaj następujące kroki na komputerze z systemem Windows 2000, aby sprawdzić, czy konto zostało utworzone i dodane do grupy gości:

    1. W menu Start wskaż pozycję Programy, wskaż pozycję Narzędzia administracyjne, a następnie kliknij pozycję Zarządzanie komputerem.
    2. Kliknij, aby rozwinąć węzeł Użytkownicy lokalni i grupy . Nowe konto powinno zostać wyświetlone w węźle Użytkownicy, a także w węźle grupy Gości.

    Wykonaj następujące kroki na komputerze z systemem Windows XP, aby sprawdzić, czy konto zostało utworzone i dodane do grupy gości:

    1. W menu Start kliknij pozycję Panel sterowania.
    2. Kliknij dwukrotnie pozycję Konta użytkowników. Nowe konto użytkownika powinno zostać wyświetlone w oknie dialogowym Konta użytkowników .

    Ważna

    Usuń nowo utworzone konto użytkownika z systemu po zakończeniu testowania.

Tworzenie nowego wpisu katalogu

Podczas tworzenia wpisu katalogu w tym przykładzie zakłada się, że system działa w systemie Windows NT, Windows 2000 lub Windows XP.

Uwaga

Ciąg przekazywany do konstruktora DirectoryEntry"WinNT://"zaczyna się od . Usługi katalogowe można również uruchamiać w innych systemach operacyjnych innych firm.

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

Dodawanie wpisu katalogu do drzewa katalogów

Poniższy kod dodaje DirectoryEntry użytkownika typu o wartości TestUser1 do drzewa usługi Active Directory.

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

Ustawianie hasła i opisu dla nowego konta użytkownika

Poniższy kod wywołuje metodę Invoke w celu wywołania SetPassword metod i Put obiektu DirectoryEntry . Spowoduje to ustawienie hasła i przypisanie opisu do konta użytkownika. Ten kod wywołuje CommitChanges również metodę w celu zapisania zmian.

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

Dodawanie konta do grupy

Aby dodać konto do grupy, wykonaj następujące kroki:

  1. Zdefiniuj zmienną typu DirectoryEntry.
  2. Wywołaj Find metodę elementu Children członkowskiego klasy, ActiveDirectory aby wypełnić zmienną. W takim przypadku grupa Gości jest celem wyszukiwania. Ten kod testuje wartość zwracaną przez Find metodę w celu ustalenia, czy grupa została znaleziona. Jeśli grupa zostanie znaleziona, nowe konto użytkownika zostanie dodane do grupy.
DirectoryEntry grp;
grp = AD.Children.Find("Guests", "group");
if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}

Rozwiązywanie problemów

Kod w tym artykule kończy się niepowodzeniem, jeśli spróbujesz uruchomić kod bez wystarczających uprawnień do utworzenia konta użytkownika. Aby kod został ukończony pomyślnie, aktualnie zalogowany użytkownik musi być członkiem grupy Administratorzy lub mieć określone uprawnienia, które umożliwiają użytkownikowi tworzenie kont użytkowników.