powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Получение пользователей из групп AD
17 сообщений из 17, страница 1 из 1
Получение пользователей из групп AD
    #38374629
Kuks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, имеем домен AD Win 2003 и проект на C#

Необходимо вывести список пользователей из группы AD.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 private void button1_Click(object sender, EventArgs e)
        {
            DirectorySearcher ds = new DirectorySearcher("SAMAccountName=" + Environment.UserName.Trim());
            ds.Filter = "(&(Name=" + "Пользователи домена" + ")(objectClass=group))";
            ds.PropertyNamesOnly = true;
            SearchResult sr = ds.FindOne();
            DirectoryEntry group = sr.GetDirectoryEntry();

            object members = group.Invoke("Members");
            foreach (object member in (IEnumerable)members)
            {
                DirectoryEntry x = new DirectoryEntry(member);
                string n = x.Name.ToString();
                listBox1.Items.Add(n);
            }
        }



Код замечательно работает для всех групп, кроме группы "Пользователи домена". Что я делаю не так, в чем затык?
...
Рейтинг: 0 / 0
Получение пользователей из групп AD
    #38374714
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Получение пользователей из групп AD
    #38374747
Kuks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо огромное, всё ок, только непонятно, почему предыдущий код не работал?
...
Рейтинг: 0 / 0
Получение пользователей из групп AD
    #38374767
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kuks,

... а в 2003-м эта группа называется именно "Пользователи домена"? ... В 2008-м домене просто "Пользователи" ...
...
Рейтинг: 0 / 0
Получение пользователей из групп AD
    #38374776
Kuks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Именно "Пользователи домена".
...
Рейтинг: 0 / 0
Получение пользователей из групп AD
    #38374792
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нету таких групп, не фантазируйте.
...
Рейтинг: 0 / 0
Получение пользователей из групп AD
    #38374804
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kuks,

... а это не OU ?
...
Рейтинг: 0 / 0
Получение пользователей из групп AD
    #38374817
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kuks,

... а, правильно, есть такая группа .. но она сама является членом группы "Пользователи" ... Значит, копайте вглубь ...
...
Рейтинг: 0 / 0
Получение пользователей из групп AD
    #38374911
Kuks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ,

Лень скриншот делать, но поверьте, такая группа есть, находится в контейнере Users
...
Рейтинг: 0 / 0
Получение пользователей из групп AD
    #38374947
Kuks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Получение пользователей из групп AD
    #38374961
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Получение пользователей из групп AD
    #38374990
Kuks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну не знаю тогда, загадка M$.
...
Рейтинг: 0 / 0
Получение пользователей из групп AD
    #38375006
Kuks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Получение пользователей из групп AD
    #38375061
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kuks,

...я же говорил, есть такая группа, но она состоит членом группы "Пользователи" .. Т.е. надо выбрать группу Пользователи, а в ней рекурсию на вложенные ... Или как-то так ...
...
Рейтинг: 0 / 0
Получение пользователей из групп AD
    #38375475
Kuks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да понятно, что в нее входит группа "Пользователи", но всё равно код не работает.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
#region Реализация прав

            using (var ctx = new PrincipalContext(ContextType.Domain))
            using (var userPrincipal = UserPrincipal.FindByIdentity(ctx, Environment.UserName.Trim()))
            using (var groupAdminPrincipal = GroupPrincipal.FindByIdentity(ctx,"Research_Admins"))
            {
                if (userPrincipal == null)
                {
                    MessageBox.Show("Отсутствует учетная запись в Active Directory или связь с контроллерами домена. \r\nВы не имеете прав для работы с приложением, приложение будет закрыто", "Research", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    Environment.Exit(0);
                }
                Name_toolStripStatusLabel.Text = "Пользователь: " + userPrincipal.Name.ToString().Trim();
                if (userPrincipal.IsMemberOf(groupAdminPrincipal))
                {
                    //Admin-------------------------------------------
                    Right_toolStripStatusLabel.Text = "Права доступа - Администратор системы";
                }
                else
                    using (var groupUserPrincipal = GroupPrincipal.FindByIdentity(ctx, "Пользователи домена")) 
                    {
                        if (userPrincipal.IsMemberOf(groupUserPrincipal))
                        {
                            //User-----------------------------------
                            Right_toolStripStatusLabel.Text = "Права доступа - Пользователь системы";
                        }
                    } 
            }

            #endregion



Вот код, наличие пользователя в группе "Пользователи домена" не проверяется, хотя он там есть. Ну что за бред? В любых других группах, например "Администраторы домена" - всё нормально, а в этой нет, если смотреть в отладчике переменную groupUserPrincipal, видно, что в группе 135 пользователей, а вхождение в группу дает false. Что за группа такая странная?
...
Рейтинг: 0 / 0
Получение пользователей из групп AD
    #38375560
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kuks Да понятно, что в нее входит группа "Пользователи ", но всё равно код не работает.
....
Вот код, наличие пользователя в группе "Пользователи домена" не проверяется, хотя он там есть. Ну что за бред? В любых других группах, например "Администраторы домена" - всё нормально, а в этой нет, если смотреть в отладчике переменную groupUserPrincipal, видно, что в группе 135 пользователей, а вхождение в группу дает false. Что за группа такая странная?

...ды наоборот жа (с) .. не замесить и нарубить, а нарубить и замесить ... Ваша группа входит в группу Пользователи ... вот тут посмотрите примерно как они там копают внутри групп с помощью
foreach(Principal principal in me.GetGroups())

http://stackoverflow.com/questions/7149157/enumeration-of-nested-ad-user-groups-using-c-sharp
...
Рейтинг: 0 / 0
Получение пользователей из групп AD
    #38375587
Kuks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
carrotik,

Нет, я пробовал по всякому. Тут я думаю дело не в этом. А в том, что группа "Пользователи домена" является ОСНОВНОЙ ГРУППОЙ для юзера, и поэтому как бы по умолчанию все пользователи домена являются членами этой группы и поэтому метод IsMemberOf не отрабатывает. Я пробовал включать учетку в группу "Администраторы домена", которая абсолютно идентична группе "Пользователи домена", тоже глобальная, тоже вложена в группу "Администраторы", но она не является основной группой для пользователя. В этом случае IsMemberOf отрабатывает нормально. Видимо это связано с возможным большим количеством пользователей в домене, и все они будут входить в группу "Пользователи домена".
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Получение пользователей из групп AD
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]