получить CN из AD (C#)
От: MMDMC  
Дата: 19.05.10 12:47
Оценка:
Нужен CN из AD, т.е. ФИО текущего юзера
Делаю вот так :

            WindowsIdentity id = WindowsIdentity.GetCurrent();
            string domainName = id.Name.Split('\\')[0];
            string userName = id.Name.Split('\\')[1];
            string Sid = id.User.Value.ToString();
            string ldapPath = "LDAP://<SID=" + Sid + ">";

            DirectoryEntry g = new DirectoryEntry(ldapPath);

            g.UsePropertyCache = true;
            DirectorySearcher ds = new DirectorySearcher(g);
            string userFilter = "(&(objectClass=user)(objectCategory=Person)(sAMAccountName={0}))";

            ds.SearchScope = SearchScope.Subtree;
            ds.PropertiesToLoad.Add("cn");
            ds.PageSize = 1;
            ds.ServerPageTimeLimit = TimeSpan.FromSeconds(2);
            ds.Filter = string.Format(userFilter, userName);

            SearchResult sr = ds.FindOne();
            string cn = (string)sr.Properties["cn"][0];



Медленно. Кажется этот оператор string cn = (string)sr.Properties["cn"][0]; тормозит.

В экселе же макрос

Set objSysInfo = CreateObject("ADSystemInfo")
strUserDN = objSysInfo.UserName

моментально выдает "CN=Иванов Петр Семенович,OU=Users,OU=ххх,OU=хххх,DC=ххх,DC=ru"
Что не так ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.