Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > логины юзеров указанной групп в актив директори


Автор: Random13 16.7.2009, 13:26
Можно ли средствами С#  из Active directory вытащить все logins юзеров указанной группы ?

Автор: Rififi 16.7.2009, 23:41
можно.
юзать классы  DirectoryEntry, DirectorySearcher etc

Автор: Random13 17.7.2009, 11:36
Юзаю. Получается получить только имена юзеров, а нужно ники ((

Автор: mihryak 17.7.2009, 12:39
entry.Properties["samAccountName"][0].ToString()

hint
когда я не знаю, как называется нужное мне св-во DirectoryEntry, я в окне Watch пишу
entry.Properties.Cast<object>().ToList() и просматриваю все имеющиеся

Автор: Rififi 17.7.2009, 23:39
Юзаю. Получается получить только имена юзеров, а нужно ники (( 
гоогле "active directory schema attributes" для списка аттрибутов

Автор: Random13 20.7.2009, 15:05
В общем, ничего не нашел ни в гугле, нигде. Пишу так

Код


            string groupName = "nameGroup";
            ArrayList arrmember = new ArrayList();
            SearchResult result;
            DirectorySearcher search = new DirectorySearcher();
            search.Filter = String.Format("(cn={0})", groupName);
            search.PropertiesToLoad.Add("member");
            result = search.FindOne();
            if (result != null)
            {
                for (int counter = 0; counter < result.Properties["member"].Count; counter++)
                {
                    string user = (string)result.Properties["member"][counter];
                    arrmember.Add(user);
                }
            }



получаю имена юзеров группы, а не их логины. Как получить логины не знаю  smile 

Автор: mihryak 21.7.2009, 10:58
Цитата(mihryak @  17.7.2009,  13:39 Найти цитируемый пост)
entry.Properties["samAccountName"][0].ToString()

здесь имелось в виду, что тебе нужно получить не строковое имя пользователя, а соответствующую ему DirectoryEntry
в результате получается
Код

            string groupName = "Domain Admins";
            using (DirectorySearcher searcher = new DirectorySearcher(
                String.Format("(cn={0})", groupName), new[] { "member" }))
            using (DirectoryEntry groupEntry = searcher.FindOne().GetDirectoryEntry())
            {
                foreach (var member in groupEntry.Properties["member"])
                {
                    using (DirectoryEntry userEntry = new DirectoryEntry("LDAP://" + member))
                    {
                        Console.WriteLine(userEntry.Properties["samAccountName"][0]);
                    }
                }
            }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)