JAK: Dodawanie użytkownika do systemu lokalnego za pomocą usług katalogowych i programu Visual C# .NET

Wersja tego artykułu dla programu Microsoft Visual Basic .NET: 306271 .

Streszczenie

W tym artykule opisano, jak użyć obszaru nazw
DirectoryServices
w celu dodania użytkownika do systemu lokalnego i do grupy.


Wymagania

  • System Microsoft Windows XP, Windows 2000 lub Windows NT 4.0
  • Program Visual C# .NET

Tworzenie przykładu

  1. Otwórz program Microsoft Visual Studio .NET i utwórz nowy projekt aplikacji konsoli języka Visual C#.
  2. W oknie Solution Explorer kliknij prawym przyciskiem myszy folder
    References, a następnie kliknij polecenie
    Add Reference.
  3. Dodaj odwołanie do zespołu (assembly)
    System.DirectoryServices.dll.
  4. Zastąp kod w pliku Class1.cs następującym kodem:
    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("UżytkownikTestowy1", "user");
    NewUser.Invoke("SetPassword", new object[] {"#12345Abc"});
    NewUser.Invoke("Put", new object[] {"Description", "Użytkownik testowy z .NET"});
    NewUser.CommitChanges();
    DirectoryEntry grp;

    grp = AD.Children.Find("Goście", "group");
    if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}
    Console.WriteLine("Utworzenie konta powiodło się");
    Console.ReadLine();
    }
    catch (Exception ex)
    {
    Console.WriteLine(ex.Message);
    Console.ReadLine();

    }
    }
    }
  5. Skompiluj i 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ście:


    1. Kliknij przycisk Start, wskaż polecenie Programy, wskaż polecenie Narzędzia administracyjne, a następnie kliknij polecenie Zarządzanie komputerem.
    2. Rozwiń węzeł
      Użytkownicy i grupy lokalne. Nowe konto powinno pojawiać się w folderze
      Użytkownicy
      oraz w grupie
      Goście.
    Wykonaj następujące kroki na komputerze z systemem Windows XP, aby sprawdzić, czy konto zostało utworzone i dodane do grupy Goście:
    1. W menu
      Start
      kliknij polecenie
      Panel sterowania.
    2. Kliknij dwukrotnie ikonę
      Konta użytkowników. Nowe konto użytkownika powinno pojawiać się w oknie dialogowym
      Konta użytkowników.
  7. Po zakończeniu testowania usuń nowo utworzone konto z systemu.

Objaśnienie kodu

Utworzenie nowej pozycji katalogu

Przy tworzeniu nowej pozycji katalogu w tym przykładzie zakłada się, że na komputerze jest uruchomiony system Microsoft Windows NT, Windows 2000 lub Windows XP. Zauważ, że ciąg, który jest przekazywany do konstruktora
DirectoryEntry, zaczyna się od „WinNT://”. Usługi katalogowe możesz również uruchomić w systemach operacyjnych innych firm.
DirectoryEntry AD = new DirectoryEntry("WinNT://" + SystemInformation.ComputerName + ",computer");

Dodanie pozycji katalogu do drzewa katalogów

Następujący kod dodaje pozycję
DirectoryEntry
typu
user
z wartością
UżytkownikTestowy1
do drzewa usługi
Active Directory.
DirectoryEntry NewUser = AD.Children.Add("UżytkownikTestowy1", "user");

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

Następujący kod wywołuje metodę
Invoke
w celu wywołania metod
SetPassword
i
Put
obiektu
DirectoryEntry. Powoduje to przypisanie hasła i 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", "Użytkownik testowy z .NET"});
NewUser.CommitChanges();

Dodanie konta do grupy

Pierwszym krokiem wykonywanym w celu dodania konta do grupy jest zdefiniowanie zmiennej typu
DirectoryEntry. Następnie zostaje wywołana metoda
Find
elementu
Children
klasy
ActiveDirectory
w celu wypełnienia tej zmiennej. W tym wypadku celem wyszukiwania jest grupa Goście. Ten kod testuje wartość zwróconą przez metodę
Find
w celu sprawdzenia, czy grupa została znaleziona. Jeśli grupa została znaleziona, nowe konto użytkownika zostaje dodane do tej grupy.
DirectoryEntry grp;
grp = AD.Children.Find("Goście", "group");
if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}

Rozwiązywanie problemów

Kod opisany w tym artykule nie działa, jeśli spróbujesz uruchomić go bez wystarczających uprawnień do tworzenia konta użytkownika. Aby można było pomyślnie wykonać ten kod, aktualnie zalogowany użytkownik musi być członkiem grupy Administratorzy lub mieć określone uprawnienia, które pozwalają na tworzenie kont użytkowników.


Właściwości

Identyfikator artykułu: 306273 — ostatni przegląd: 08.04.2003 — zmiana: 1

Opinia