Четверг, 16.07.2026, 10:24 | Приветствую Вас Гость

Все о разработке ПО

Главная » Статьи » .NET » C#

Создание пользователей в Active Directory программно
Предположим нужно протестировать импорт большого количества. Для этого нам потребуется сгенерировать определенное количество пользователей. Сгенерированное имя пользователя будет выглядеть следующим образом: demo1, demo2... Если пользователей нужно сгенрировать больше 10-ти, то имя будет выглядеть следубщим образом: demo01, demo02... Если больше 100 то demo001, demo124...
Итак предположим что пользователь каким-либо способом указывает необходимое количество записей которое нам потребуется создать, а также пользователь задает маску. Не будем вдаваться в подробности того что пользователь будет вводить запрещенные символы в маске, ограничимся тем что пользователь будет вводить нормальные строки вида : demo, test, blah и т.д.
Для начала сгенрируем строку имени по маске и номеру записи:

string name = string.Format("{0}" + GetFormatStringMask(1, usersNumber), mask, i);

Теперь рассмотрим метод GetFormatStringMask который преобразует номер записи в необходимый формат например если записей 1000 то 5-я запись должна выглядеть как 0005.

        public static string GetFormatStringMask(int parameterNumber, int number)
        {
            int initial = number;
            int divisions = initial;
            string formatter = "{" + parameterNumber.ToString() + ":0";
            while (true)
            {
                double d = divisions / (double)10;
                if (d >= 1)
                {
                    formatter += "0";
                }
                else
                {
                    break;
                }
                divisions = (int)d;
            }
            formatter += "}";
           
            return formatter;
        }

int parameterNumber - в нашем случае он равен 1 потому что нулевой параметр это имя маски
int number - номер записи

Теперь мы можем в цикле генерировать новое имя. Перейдем собственно к созданию:

        private static void CreateUser(DirectoryEntry parent, string userName)
        {
            using (var usr = parent.Children.Add(string.Format("CN={0}", userName), "user"))
            {
                // Set the samAccountName, then commit changes to the directory.
                usr.Properties["samAccountName"].Value = userName;
                usr.CommitChanges();
            }
        }

DirectoryEntry parent - это параметр той группы куда мы собственно будем укладывать пользователей, создание выглядит примерно следующим образом

DirectoryEntry parent = new DirectoryEntry(
                              "LDAP://host/OU=TestUnit,DC=yourdomain,DC=com",
                              "HostUserName",
                              "HostUserPassword",
                              AuthenticationTypes.Secure
                              );

Настройки каждой операционной системы разные. В некоторых по умолчанию создается пользователь учетная запись которого по-умолчанию disabled.

ПРИМЕЧАНИЕ : Свойство userAccountControl класса DrectoryEntry, при создании записи будут равно null, инициализировать его сразу не получится, поэтому сначала создайте запись (вызвав CommitChanges();) ActiveDirectory присвоит значения по умолчанию, по чего вы получите доступ к флагам userAccountControl


Для активации учетной записи нам потребуется следующий метод:

        private static void Enable(string userDN)
        {
            using (var usr = new DirectoryEntry(
                            string.Format("LDAP://host/CN={0},OU=TestUnit,DC=yourdomain,DC=com", userDN),
                            "HostUserName",
                            "HostUserPassword",
                            AuthenticationTypes.Secure))
            {
                int val = (int)usr.Properties["userAccountControl"].Value;
                usr.Properties["userAccountControl"].Value = val & ~(int)ActiveDs.ADS_USER_FLAG.ADS_UF_ACCOUNTDISABLE;
                usr.CommitChanges();
            }
        }

Ну и собственно осталось воспользоваться созданными методами:

            DirectoryEntry parent = new DirectoryEntry(
                              "LDAP://host/OU=TestUnit,DC=yourdomain,DC=com",
                              "HostUserName",
                              "HostUserPassword",
                              AuthenticationTypes.Secure
                              );
            int usersCreated = 0;
            Console.WriteLine("Creating users");
            for (int i = 0; i < usersNumber; i++)
            {
                string name = string.Format("{0}" + GetFormatStringMask(1, usersNumber), mask, i);
                try
                {
                    CreateUser(parent, name);
                    Enable(name);
                    usersCreated++;
                }
                catch (Exception e)
                {
                    Console.WriteLine("Failed to create user {0} : {1}", name, e.Message);
                }
            }
            Console.WriteLine("Users created {0}", usersCreated);

Список материалов:

Quick List for C# Code Examples
Категория: C# | Добавил: betep (26.06.2009)
Просмотров: 36997 | Комментарии: 2 | Теги: C#, .NET, LDAP, DirectoryEntry, Active Directory | Рейтинг: 5.0/1 |
Всего комментариев: 1
1 kravtw  
0
[color=color_url - На ресурсе www.catred.net вы сможите http://www.catred.net - скачать книги бесплатно которые всегда будут с вами, полезные советы, которые всегда могут пригодится - ситуации бывают самые разные: http://www.catred.net - рекомендации по поиску работы, http://www.catred.net/index100.htm - как вас пытаются подловить опера, http://www.catred.net/index302.htm - как противостоять психологическому давлению налоговиков, http://www.catred.net/index301.htm - как противостоять зажравшемуся чиновнику?, http://www.catred.net/index303.htm - тактика поведения с налоговиками : как противостоять их произволу, может пригодиться статья http://www.catred.net/index305.htm - памятка для мародера и http://www.catred.net/index304.htm - как уберечься от снайпера? или http://www.catred.net/index306.htm - самозащита - гладкоствольное оружие самообороны, http://www.catred.net - как устроиться на работу после 40, что такое http://sd-spb.ru - раскрутка сайтов - и масса советов на все случаи жизни. Еще можно бесплатно http://www.catred.net/index14.htm - скачать книги на мобильный любых жанров: http://www.catred.net/index01.htm - скачать детективы, http://www.catred.net/index02.htm - скачать триллеры, http://www.catred.net/index03.htm - скачать женские романы, http://www.catred.net/index04.htm - скачать приключения, http://www.catred.net/index07.htm - скачать фантастику, а так же http://www.catred.net/index9.htm - кулинарные рецепты, http://www.catred.net/index18.htm - как похудеть и много другого, чтобы занять свое свободное время : http://www.catred.net - скачать книги бесплатно на телефон - лучший вариант не попасть в ситуацию, когда неоткуда ждать помощи и некому подсказать ЧТО ДЕЛАТЬ в данной ситуации! Так же вам может пригодится - http://www.catred.net - книги http://www.catred.net - книги для мобильных телефонов http://www.catred.net - скачать книги для мобильного
http://www.catred.net/index7.htm - советы : как добавить и отредактировать сообщение, которое будет выводить при старте компьютера?

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Меню сайта
Форма входа
Категории раздела
C# [4]
С++ [0]
ASP.NET [1]
Поиск
Ссылки
  • Библиотека
  • Журналистика
  • Нужен совет?
  • Все про автомобили
  • Мобильные устройства
  • Все о собаках
  • Строимся вместе
  • Путешествуем вместе
  • Природа
  • Интерьеры
  • Необъяснимые явления
  • Легенды и Мифы
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0