2010-05-25 23 views
5

Şu anda bu kodu var Active Directory Listesi OU adlı

 string defaultNamingContext; 

     DirectoryEntry rootDSE = new DirectoryEntry("LDAP://RootDSE"); 
     defaultNamingContext = rootDSE.Properties["defaultNamingContext"].Value.ToString(); 
     rootDSE = new DirectoryEntry("LDAP://" + defaultNamingContext); 
     //DirectoryEntry domain = new DirectoryEntry((string)"LDAP://" + defaultNamingContext); 

     DirectorySearcher ouSearch = new DirectorySearcher(rootDSE,"(objectCategory=Organizational-Unit)", 
           null, SearchScope.Subtree); 

     MessageBox.Show(rootDSE.Path.ToString()); 
     try 
     { 
      SearchResultCollection collectedResult = ouSearch.FindAll(); 
      foreach (SearchResult temp in collectedResult) 
      { 
       comboBox1.Items.Add(temp.Properties["name"][0]); 
       DirectoryEntry ou = temp.GetDirectoryEntry(); 
      } 
     } 

i bu durumda DC=g-t-p,DC=Local yılında, o rootDSE.Path doğru yere infact işaret olduğunu görebilirsiniz ancak dizin arama kokan debugger kullanımı

Herhangi bir sonuç bulamıyorum. Biri yardım edebilir mi?

cevap

7

Stephen - benim için kötü - nedense objectCategory kullanarak arama çalışmıyor.

objectCategory arama için, CN=Organizational-Unit olarak görüntülenir rağmen, yine de objectClass için aynı değeri kullanmak gerekir:

Yani filtreyi (objectCategory=organizationalUnit) kullanmayı deneyin - bu kesinlikle benim için çalışıyor! Bununla

DirectorySearcher ouSearch = new DirectorySearcher(rootDSE); 
ouSearch.Filter = "(objectCategory=Organizational-Unit)"; 
ouSearch.SearchScope = SearchScope.Subtree; 

ouSearch.PropertiesToLoad.Add("name"); 
// add more properties if you want to ... 

:

GÜNCELLEME: Eğer DirectorySearcher oluştururken (birleşik giriş kutusunda görüntülenmesi için), arama sonucu bazı özelliklerini almak için, o eklemeniz gerekir Kesinlikle temp.Properties["name"][0]'u yakalamanız ve açılan kutucukların listesine yapıştırmanız gerekir.

Gerçekten benim birkaç sonra bu çalışmıyorum için kendimi tekme, o kadar basit ..... name özelliği kapma sonra çizgiyi

DirectoryEntry ou = temp.GetDirectoryEntry(); 

gerekenler

+1

OMG şey görmüyorum deneme ve hata kodlama saatleri: @ Son zamanlarda en üretken olduğunu sanmıyorum ... –

+0

Arama nesnelerini Combo kutu öğelerine eklemek için doğru şekilde topluyor gibi görünüyor mu? –

+1

+1 Kendimi test ettim ve cevabımı yazmak üzereyken, aynı kesin sonuca vardım. –

İlgili konular