2010-07-20 60 views
4

我做了一些編程以讀取Active Directory中的數據,例如用戶帳戶或組織信息等。下面的代碼就像我所做的一樣。如何以編程方式讀取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]); 
    } 
} 

問題是如何知道目標對象具有哪些屬性,然後我可以在獲取它之前使用它們過濾數據。

任何想法?

回答

7

如果你有DirectoryEntry,你可以檢查其.SchemaEntry

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

DirectoryEntry schema = deMyself.SchemaEntry; 

這應該 - 如果有必要的權限 - 讓您使用在架構中定義的特性 - 比如MandatoryPropertiesOptionalProperties

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

這是否幫助您開始?

您可能還想看看BeaverTail - 我的C#開源LDAP瀏覽器。

alt text http://adsi.mvps.org/adsi/CSharp/beavertail1.png

它可以讓你檢查任何LDAP節點並查看其所有屬性。

+1

你的答案和LDAP瀏覽器都很棒。 – 2010-07-20 15:41:35

相關問題