Что ж, «извлечение всех атрибутов» само по себе, поскольку справочник является проблемой, не имеет смысла.Вы имеете в виду:
- Все возможные атрибуты пользователя, как они описаны в СХЕМЕ
- Все значения атрибутов пользователя
- Все атрибуты пользователя и операции
И я не забочусь о том, что некоторые атрибуты пользователей могут быть доступны только для чтения, а другие - только с определенными значениями.Я добавляю способ получения контента.
@ Ghostfire дает решение для получения всех пользовательских атрибутов и операционных атрибутов.
DirectoryEntry deUser = new DirectoryEntry("LDAP://WM2008R2ENT:389/CN=AUser,OU=MonOu,DC=dom,DC=fr");
foreach (string property in deUser.Properties.PropertyNames)
{
Console.WriteLine("\t{0} : {1} ", property, deUser.Properties[property][0]);
}
Но помните, что при поиске в LDAP лучшийспособ дать атрибуты, которые вы хотите получить:
/* Connection to Active Directory
*/
DirectoryEntry deBase = new DirectoryEntry("LDAP://WM2008R2ENT:389/dc=dom,dc=fr");
/* Directory Search
*/
DirectorySearcher dsLookFor = new DirectorySearcher(deBase);
dsLookFor.Filter = "(sn=users)";
dsLookFor.SearchScope = SearchScope.Subtree;
dsLookFor.PropertiesToLoad.Add("cn");
dsLookFor.PropertiesToLoad.Add("givenName");
dsLookFor.PropertiesToLoad.Add("telephoneNumber");
dsLookFor.Sort = new SortOption("givenName", SortDirection.Descending);
dsLookFor.VirtualListView = new DirectoryVirtualListView(1, 0, 2);
SearchResultCollection srcUsers = dsLookFor.FindAll();