Udostępnij za pośrednictwem


Dodawanie użytkownika do systemu lokalnego przy użyciu usług katalogowych i programu Visual C sharp

W tym artykule opisano sposób używania DirectoryServices przestrzeni nazw do dodawania użytkownika do systemu lokalnego i grupy w programie 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 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 System.DirectoryServices.dll zestawu.

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

    Uwaga 16.

    W programie Visual C# 2005 lub Visual C# 2008 plik Class1.cs jest zastępowany przez plik 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ścia:

    1. W menu Start wskaż polecenie Programy, wskaż pozycję Narzędzia administracyjne, a następnie kliknij pozycję Zarządzanie komputerem.
    2. Kliknij, aby rozwinąć węzeł Użytkownicy i grupy lokalne. Nowe konto powinno pojawić się w węźle Użytkownicy, a także w węźle grupy gościa.

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

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

    Ważne

    Po zakończeniu testowania usuń nowo utworzone konto użytkownika z systemu.

Tworzenie nowego wpisu katalogu

Podczas tworzenia wpisu katalogu w tym przykładzie zakłada się, że system korzysta z systemu Windows NT, Windows 2000 lub Windows XP.

Uwaga 16.

Ciąg przekazywany do konstruktora DirectoryEntry zaczyna się od "WinNT://". 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 z 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, aby wywołać SetPassword metody DirectoryEntry i Put obiektu . Spowoduje to ustawienie hasła i przypisanie opisu do konta użytkownika. Ten kod wywołuje również metodę CommitChanges 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 metodę Find Children składowej ActiveDirectory klasy, aby wypełnić zmienną. W takim przypadku grupa gościa jest elementem docelowym wyszukiwania. Ten kod sprawdza wartość zwracaną przez Find metodę w celu określenia, 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 zakończył się 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.