Добавление пользователя в локальную систему с помощью служб каталогов и Visual C Sharp
В этой статье описывается DirectoryServices
использование пространства имен для добавления пользователя в локальную систему и группу в Visual C#.
Исходная версия продукта: Visual C#
Исходный номер базы знаний: 306273
Сводка
В этой пошаговой статье показано, как использовать DirectoryServices
пространство имен для добавления пользователя в локальную систему и группу.
Создание примера
Запустите Visual Studio .NET 2003, Visual Studio 2005 или Visual Studio 2008, а затем создайте проект консольного приложения Visual C#.
В обозревателе решений щелкните правой кнопкой мыши Ссылки и выберите команду Добавить ссылку.
Добавьте ссылку на сборку
System.DirectoryServices.dll
.Замените код в файле 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(); } } }
Скомпилируйте и запустите проект.
Выполните следующие действия на компьютере под управлением Windows 2000, чтобы убедиться, что учетная запись создана и добавлена в группу Гостевые:
- В меню Пуск наведите указатель мыши на пункт Программы, а затем — Администрирование, а затем — Управление компьютером.
- Щелкните, чтобы развернуть узел Локальные пользователи и группы . Новая учетная запись должна появиться в узле Пользователи, а также под узлом группы гостевых гостей.
Выполните следующие действия на компьютере под управлением Windows XP, чтобы убедиться, что учетная запись создана и добавлена в группу "Гости".
- В меню Пуск щелкните панель управления.
- Дважды щелкните Учетные записи пользователей. Новая учетная запись пользователя должна появиться в диалоговом окне Учетные записи пользователей .
Важно!
После завершения тестирования удалите только что созданную учетную запись пользователя из системы.
Создание записи нового каталога
При создании записи каталога в этом примере предполагается, что система работает 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();
Добавление учетной записи в группу
Чтобы добавить учетную запись в группу, выполните следующие действия.
- Определите переменную типа
DirectoryEntry
. Find
Вызовите методChildren
члена класса дляActiveDirectory
заполнения переменной. В этом случае целевой целью поиска является группа "Гость". Этот код проверяет значение, возвращаемое методомFind
, чтобы определить, найдена ли группа. Если группа найдена, в нее добавляется новая учетная запись пользователя.
DirectoryEntry grp;
grp = AD.Children.Find("Guests", "group");
if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}
Устранение неполадок
Код, приведенный в этой статье, завершается ошибкой, если вы пытаетесь выполнить код без достаточных привилегий для создания учетной записи пользователя. Для успешного выполнения кода текущий вошедший в систему пользователь должен быть членом группы администраторов или иметь определенные разрешения, позволяющие пользователю создавать учетные записи пользователей.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по