Работа с доменами Windows NT
Посвящается моей жене - Наташеньке
Эта статья посвящена работе с доменами Windows NT. На первый взгляд кажется, что вполне можно обойтись стандартными средствами администрирования, которые существуют в операционной системе, но существует рад задач,
в которых необходимо автоматизировать создание и удаление групп пользователей, самих пользователей и включение пользователей в группы. В своей практике, я столкнулся с проблемой написания программы, которая обрабатывает лог MSProxy, а пользователям, превысившим лимит использования интернет, выход закрывается. Для этого необходимо было просто удалить пользователей из определенной группы. В начале следующего месяца необходимо вернуть всех пользователей интернет в группу доступа. Вот при создании такой программы я и начал изучение функций работы с доменной организацией Windows NT.
В этой статье мы рассмотрим создание и удаление группы в домене, создание и удаление пользователя, добавление и удаление пользователя из группы. Все будет рассматриваться на примерах, поэтому определимся с некоторыми начальными условиями. Домен, с которым мы будем работать, называется "Test". Группа, с которой мы будем работать - "TestGroup".
Пользователь - "TestUser". Для того чтобы было проще работать с проектом, входим в меню References и подключаем Active DS Type Library. Итак, начинаем работать.
Создание и удаление группы
Не будем долго рассказывать о структуре домена, группах и тому подобное. Это выходит за рамки статьи, а сразу приведем рабочий код программы с комментариями.
Dim domain As IADsDomain 'Объявляем переменную типа домена Dim grp As IADsGroup 'Объявляем переменную типа группа Set domain = GetObject("WinNT://Test") ' Получаем объект домена Test Set grp = domain.Create("group", "TestGroup") 'Создаем новую группу пользователей grp.Put "groupType", ADS_GROUP_TYPE_DOMAIN_LOCAL_GROUP ' Устанавливаем свойство типа группы. grp.Put "Description", "Группа для примера работы с доменом" ' Пишем описание группы grp.SetInfo 'Сохраняем информацию domain.Delete "group", "groupType" 'Удаляем группу из домена
Вот и все. Создать группу и удалить чрезвычайно просто.
Создание и удаление пользователей
Создание пользователя более кропотливая задача, нежели создание группы, так как пользователь домена имеет больше атрибутов, нежели группа. Для начала рассмотрим простой пример создания пользователя, и что из этого получается.
Dim domain As IADsDomain Dim usr As IADsUser 'Объявляем переменную типа пользователь Set domain = GetObject("WinNT://Test") Set usr = domain.Create("user", "TestUser") ' Создаем нового пользователя usr.SetInfo ' Сохраняем информацию о пользователе domain.Delete "user", "TestUser" ' Удаляем пользователя
Результатом этих действий будет создание нового пользователя с именем TestUser. Он будет иметь еще некоторые атрибуты, а именно: - Full Name будет TestUser - Пароль будет пустым - Будет установлено свойство сменить пароль при первом входе - Password Never Expires будет установлено в FALSE - Пользователь будет включен только в одну группу - Domain User
Приведу несколько примеров установки атрибутов пользователя, так как стандартные установки не всегда хороши. Итак,
usr.Put "Description", "Тестовый пользователь" 'Установка описания для пользователя usr.Put "EmailAddress", "test@test.com" 'Без комментариев, как говориться usr.Put "FullName", "Test User" 'Полное имя пользователя usr.Put "AccountDisabled", 1 'Заблокировать пользователя
Вот и все, что можно установить с помощью Put, но если вы внимательно читали статью, то уже начинаете меня ругать. Почему? Действительно я не описал возможность установить пароль для пользователя. С помощью метода Put это сделать невозможно, поэтому существует специальный метод SetPassword. А вот и пример использования
usr.SetPassword "blablabla"
На этом знакомство с заведением и удалением пользователя мы закончим и рассмотрим последнюю тему статьи - включение и исключение пользователя из групп.
Управление пользователями группы.
Для того чтобы добавить пользователя в группу необходимо воспользоваться следующим методом:
grp.Add ("WinNT://Test/TestUser")
Удаление осуществляется с помощью
grp. Remove ("WinNT://Test/TestUser") grp - объект группы в домене NT.
Вот и все. Осталось сказать несколько заключительных слов. Определить, входит пользователь в группу или нет, можно с помощью функции IsMember, которая возвращает логическое значение "да" и "нет", смысл которого понятен и без объяснения. Что мы узнали из этой статьи? Мы узнали о том, как работать с доменом. Немного, но достаточно для того, чтобы найти массу полезных применений. Например, если немного подумать, то можно без проблем узнать, сколько пользователей зарегистрировано в домене.