views:

34

answers:

1

I did some programming for reading the data from Active Directory such as user account or Orgnization info and so on. The code below is like something what I did.

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]);
    }
}

The problem is how can I know what properties that target objects have then I can use them to filter the data before get it all.

Any ideas?

+1  A: 

If you have a DirectoryEntry, you can inspect its .SchemaEntry:

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

DirectoryEntry schema = deMyself.SchemaEntry;

This should - if you have the necessary permissions - give you access to the properties defined in the schema - things like MandatoryProperties or OptionalProperties:

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

Does that help you get started??

You might also want to have a look at BeaverTail - my C# open-source LDAP browser.

alt text

It will allow you to inspect any LDAP node and see all its properties.

marc_s
Both your answer and the LDAP browser are great.
Millionbonus