Откройте Microsoft Visual Studio и создайте новый проект.
Добавьте на главную форму вашего проекта следующие элементы управления:
- textBox1 — Поле для ввода имени пользователя, используемого при проверке подлинности клиента;
- textBox2 — Поле для ввода пароля, используемого при проверке подлинности клиента;
- textBox3 — DNS или IP адрес ПЭВМ в группу которого будет добавлен пользователь;
- textBox4 — Учетная запись пользователя, которая будет добавлена в указанную группу;
- textBox5 — Домен учетной записи или DNS имя ПЭВМ, где расположен учетная запись;
- textBox6 — Группа в которую будет добавлен пользователь;
- button1 – Кнопка запуска процесса добавления пользователя в группу.
У вас получится приведенный ниже пример.
Сделайте двойной клик левой клавишей мыши по элементу управления «button1», вы перейдете в автоматически созданный метод «button1_Click», события «Click», возникающего при нажатии левой клавишей мыши по данному элементу управления.
Основным средством работы как с «Active Directory», так и с локальным/удаленным компьютером является объект «System.DirectoryServices», хранящийся в «System.DirectoryServices.dll». Поэтому перед тем как начать работать, добавьте библиотеку «System.DirectoryServices.dll» в «References» вашего проекта. И подключите пространство имён «System.DirectoryServices», используя директиву «using». В пространство имён «System.DirectoryServices» включены два основных компонента класса: «DirectoryEntry» и «DirectorySearcher», которые используют технологию ADSI(Active Directory Services Interfaces). Эти классы могут быть использованы с любым из сервис провайдеров Active Directory, такими как Lightweight Directory Access Protocol (LDAP), Internet Information Services (IIS), Novell NetWare Directory Service (NDS), и WinNT. Для добавления пользователя в группу на удаленном компьютере необходимо воспользоваться классом «DirectoryEntry». При инициализации нового экземпляра данного класса, необходимо указать путь для данного объекта «DirectoryEntry».
Синтаксис свойства «Path» варьируется в зависимости от поставщика. Ниже описываются наиболее типичные сценарии применения:
1)«WinNT»
- Подключение к компьютеру. Например: «WinNT://<имя_компьютера>/computer «.
- Подключение к группе на компьютере. Например: «WinNT://<имя_домена>/<имя_компьютера>/<имя_группы>». Если подключение производится к локальному компьютеру, следует ввести: «WinNT://<имя_компьютера>/<имя_группы>».
- Подключение к пользователю на компьютере. Например: «WinNT://<имя_домена>/<имя_компьютера>/<имя_пользователя>». Если подключение производится к локальному компьютеру, следует ввести: «WinNT://<имя_компьютера>/<имя_пользователя>».
- Подключение к службам на компьютере. Например: «WinNT://<имя_домена>/<имя_компьютера>/<имя_службы>». Если подключение производится к локальному компьютеру, следует ввести: «WinNT://<имя_компьютера>/<имя_службы>».
- Обнаружение всех доменов в сети. Например: «WinNT:». Домены могут быть найдены путем перечисления дочерних элементов данного элемента.
2)«LDAP»
- Подключение к группе в домене. Например: «LDAP://CN=<имя_группы>, CN =<Пользователи>, DC=<компонент_домена>, DC=<компонент_домена>,…».
- Подключение к пользователю в домене. Например: «LDAP://CN=<полное_имя_пользователя>, CN =<Пользователи>, DC=<компонент_домена>, DC=<компонент_домена>,…».
- Подключение к компьютерам в домене. Например: «LDAP://CN=<имя_компьютера>, CN =<Компьютеры>, DC=<компонент_домена>, DC=<компонент_домена>,…».
3)«IIS»
- Подключение к веб-каталогу. Например: «IIS://LocalHost/W3SVC/1/ROOT/<имя_веб-каталога>».
В соответствии с приведенным описанием синтаксиса свойства «Path», формируем подключение к удаленному компьютеру с указанием DNS имени, а так же формируем две переменные содержащие пути к группе в которую будет добавлен пользователь и пути к расположению учетной записи.
//Путь к группе в которую
//будет добавлен пользователь.
string groupPath =
string.Format("WinNT://{0}/{1},group", textBox3.Text, textBox6.Text);
//Путь к учетной записи пользователя.
string userPath =
string.Format("WinNT://{0}/{1},user", textBox5.Text, textBox4.Text);
//Инициализируем новый экземпляр класса
//System.DirectoryServices.DirectoryEntry,
//который привязывает этот экземпляр к узлу
//доменных служб Active Directory,
//расположенному по указанному пути.
//В качестве параметра указывается путь
//по которому требуется привязать
//System.DirectoryServices.DirectoryEntry.(System.String)
//к каталогу.
DirectoryEntry AD =
new DirectoryEntry(String.Format("WinNT://{0},computer", textBox3.Text));
Для аутентификации на удаленном компьютере необходимо свойствам «Username» и «Password», указать учетные данные.
//Задаем имя пользователя, используемое //при проверке подлинности клиента. AD.Username = textBox1.Text; //Задаем пароль, используемый //при проверке подлинности клиента. AD.Password = textBox2.Text;
После успешной аутентификации на удаленном компьютере необходимо выполнить поиск группы, в которую будет добавлен пользователь.
//Получаем Объект System.DirectoryServices.DirectoryEntry,
//представляющий найденный дочерний объект.
DirectoryEntry grp =
AD.Children.Find(textBox6.Text, "group");
//Выполняем проверку, найдена ли группа
//на удаленном компьютере.
if (grp != null) {}
Если группа не найдена, то выводим сообщение об отрицательном результате.
else
{
//Выводим сообщение, что группа в которую необходимо
//добавить пользователя, не найдена.
MessageBox.Show(String.Format("Группа «{0}» не найдена!", textBox6.Text));
}
В случае если группа найдена, выполняем метод «DirectoryEntry.Invoke», данный метод добавляет пользователя в указанную группу. В первом параметре метода «Invoke», указывается имя метода – «Add», который должен быть вызван в объекте. Вторым параметром указывается путь к учетной записи пользователя которого необходимо добавить, с последующим сохранением внесенных изменений в элемент каталога в базовом хранилище каталогов.
var root = new DirectoryEntry(groupPath);
root.Invoke("Add", new object[] { userPath });
//Сохраняем изменения, внесенные в элемент
//каталога в базовом хранилище каталогов.
root.CommitChanges();
Полный листинг добавления пользователя в указанную группу приведен ниже, добавьте его в тело метода «button1_Click».
try
{
//Путь к группе в которую
//будет добавлен пользователь.
string groupPath =
string.Format("WinNT://{0}/{1},group", textBox3.Text, textBox6.Text);
//Путь к учетной записи пользователя.
string userPath =
string.Format("WinNT://{0}/{1},user", textBox5.Text, textBox4.Text);
//Инициализируем новый экземпляр класса
//System.DirectoryServices.DirectoryEntry,
//который привязывает этот экземпляр к узлу
//доменных служб Active Directory,
//расположенному по указанному пути.
//В качестве параметра указывается путь
//по которому требуется привязать
//System.DirectoryServices.DirectoryEntry.(System.String)
//к каталогу.
DirectoryEntry AD =
new DirectoryEntry(String.Format("WinNT://{0},computer", textBox3.Text));
//Задаем имя пользователя, используемое
//при проверке подлинности клиента.
AD.Username = textBox1.Text;
//Задаем пароль, используемый
//при проверке подлинности клиента.
AD.Password = textBox2.Text;
//Получаем Объект System.DirectoryServices.DirectoryEntry,
//представляющий найденный дочерний объект.
DirectoryEntry grp =
AD.Children.Find(textBox6.Text, "group");
//Выполняем проверку, найдена ли группа
//на удаленном компьютере.
if (grp != null)
{
var root = new DirectoryEntry(groupPath);
root.Invoke("Add", new object[] { userPath });
//Сохраняем изменения, внесенные в элемент
//каталога в базовом хранилище каталогов.
root.CommitChanges();
//Выводим сообщение об успешном
//добавлении пользователя в группу
MessageBox.Show(
String.Format(
"Пользователь {0} успешно добавлен в группу "+ "«"+textBox6.Text+"»!",
textBox4.Text),
"Добавление пользователя",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
else
{
//Выводим сообщение, что группа в которую необходимо
//добавить пользователя, не найдена.
MessageBox.Show(String.Format("Группа «{0}» не найдена!", textBox6.Text));
}
}
catch (Exception ex)
{
//Выводим сообщение, что в процессе
//добавления пользователя в группу,
//возникла ошибка.
MessageBox.Show(ex.ToString(),
"Добавление пользователя",
MessageBoxButtons.OK,
MessageBoxIcon.Warning);
}
Запустите ваш проект, нажав на клавиатуре клавишу «F5», заполните все поля и нажмите кнопку «Добавить». В случае успешного добавления пользователя вы увидите соответствующее сообщение. Если пользователь уже присутствует в данной группе, у вас появится сообщение с исключением «Указанная учетная запись уже входит в эту группу».
Ссылка для скачивания примера: Rusfolder.net
0.00 (0%) 0 votes










