Нужен 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"
Что не так ?