Добавление пользователя в локальную систему с помощью служб каталогов и Visual C Sharp

В этой статье описывается DirectoryServices использование пространства имен для добавления пользователя в локальную систему и группу в Visual C#.

Исходная версия продукта: Visual C#
Исходный номер базы знаний: 306273

Сводка

В этой пошаговой статье показано, как использовать DirectoryServices пространство имен для добавления пользователя в локальную систему и группу.

Создание примера

  1. Запустите Visual Studio .NET 2003, Visual Studio 2005 или Visual Studio 2008, а затем создайте проект консольного приложения Visual C#.

  2. В обозревателе решений щелкните правой кнопкой мыши Ссылки и выберите команду Добавить ссылку.

  3. Добавьте ссылку на сборку System.DirectoryServices.dll .

  4. Замените код в файле Class1.cs следующим кодом.

    Примечание.

    В Visual C# 2005 или Visual C# 2008 файл Class1.cs заменяется файлом 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. Скомпилируйте и запустите проект.

  6. Выполните следующие действия на компьютере под управлением Windows 2000, чтобы убедиться, что учетная запись создана и добавлена в группу Гостевые:

    1. В меню Пуск наведите указатель мыши на пункт Программы, а затем — Администрирование, а затем — Управление компьютером.
    2. Щелкните, чтобы развернуть узел Локальные пользователи и группы . Новая учетная запись должна появиться в узле Пользователи, а также под узлом группы гостевых гостей.

    Выполните следующие действия на компьютере под управлением Windows XP, чтобы убедиться, что учетная запись создана и добавлена в группу "Гости".

    1. В меню Пуск щелкните панель управления.
    2. Дважды щелкните Учетные записи пользователей. Новая учетная запись пользователя должна появиться в диалоговом окне Учетные записи пользователей .

    Важно!

    После завершения тестирования удалите только что созданную учетную запись пользователя из системы.

Создание записи нового каталога

При создании записи каталога в этом примере предполагается, что система работает Windows NT, Windows 2000 или Windows XP.

Примечание.

Строка, передаваемая конструктору DirectoryEntry , начинается с "WinNT://". Службы каталогов также можно запускать в других операционных системах сторонних разработчиков.

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

Добавление записи каталога в дерево каталогов

Следующий код добавляет DirectoryEntry пользователя типа со значением TestUser1 в дерево Active Directory.

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

Установка пароля и описания для новой учетной записи пользователя

Следующий код вызывает метод Invoke для вызова SetPassword методов DirectoryEntry и Put объекта . При этом задается пароль и назначается описание учетной записи пользователя. Этот код также вызывает CommitChanges метод для сохранения изменений.

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

Добавление учетной записи в группу

Чтобы добавить учетную запись в группу, выполните следующие действия.

  1. Определите переменную типа DirectoryEntry.
  2. Find Вызовите метод Children члена класса для ActiveDirectory заполнения переменной. В этом случае целевой целью поиска является группа "Гость". Этот код проверяет значение, возвращаемое методом Find , чтобы определить, найдена ли группа. Если группа найдена, в нее добавляется новая учетная запись пользователя.
DirectoryEntry grp;
grp = AD.Children.Find("Guests", "group");
if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}

Устранение неполадок

Код, приведенный в этой статье, завершается ошибкой, если вы пытаетесь выполнить код без достаточных привилегий для создания учетной записи пользователя. Для успешного выполнения кода текущий вошедший в систему пользователь должен быть членом группы администраторов или иметь определенные разрешения, позволяющие пользователю создавать учетные записи пользователей.