Как я могу прочитать схему Active Directory программно - PullRequest
5 голосов
/ 20 июля 2010

Я немного программировал для чтения данных из Active Directory, таких как учетная запись пользователя или информация об организации и т. Д.Приведенный ниже код похож на то, что я сделал.

DirectoryEntry entry = new DirectoryEntry(
    "LDAP://CN=Users,DC=domain,DC=com",
    null,
    null,
    AuthenticationTypes.Secure
    );

DirectorySearcher search = new DirectorySearcher(entry);

using (SearchResultCollection src = search.FindAll())
{
    foreach (SearchResult result in src)
    {
        Console.WriteLine(result.Properties["name"][0] + " : " + 
                          result.Properties["department"][0]);
    }
}

Проблема в том, как я могу узнать, какие свойства имеют целевые объекты, а затем использовать их для фильтрации данных, прежде чем получить все это.

Есть идеи?

1 Ответ

7 голосов
/ 20 июля 2010

Если у вас есть DirectoryEntry, вы можете проверить его .SchemaEntry:

DirectoryEntry entry = new DirectoryEntry("LDAP://......");

DirectoryEntry schema = entry.SchemaEntry;

Это должно - если у вас есть необходимые разрешения - предоставить вам доступ к свойствам, определенным в схеме - таким вещам, как MandatoryProperties или OptionalProperties:

foreach (var prop in schema.Properties.PropertyNames)
{
   string propName = prop.ToString();
   var propValue = schema.Properties[propName].Value;
}

Помогает ли это вам начать ??

Возможно, вы также захотите взглянуть на BeaverTail - мой браузер LDAP с открытым кодом на C #.

альтернативный текст http://adsi.mvps.org/adsi/CSharp/beavertail1.png

Это позволит вам проверить любой узел LDAP и увидеть все его свойства.

...