2010-05-25 7 views
5

मैं इस कोड वर्तमान में, हैसक्रिय निर्देशिका सूची OU के

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

जब मैं डिबगर का उपयोग मैं देख सकता हूँ कि rootDSE.Path सही जगह पर वास्तव में की ओर इशारा करते है, इस मामले DC=g-t-p,DC=Local में लेकिन निर्देशिका खोजकर्ता नहीं करता ' कोई परिणाम नहीं मिला। क्या कोई मदद कर सकता है?

उत्तर

7

स्टीफन - मेरा बुरा - किसी कारण से, ऑब्जेक्ट श्रेणी का उपयोग करके खोज काम नहीं करती है।

हालांकि objectCategory, CN=Organizational-Unit के रूप में प्रदर्शित किया जाता है खोज के लिए, आप अभी भी क्लास के लिए के रूप में एक ही मूल्य का उपयोग करने की जरूरत है:

तो फिल्टर (objectCategory=organizationalUnit) उपयोग करने का प्रयास - यह निश्चित रूप से मेरे लिए काम करता है!

अद्यतन:

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 ... 

इस के साथ: आदेश (ताकि उन्हें कॉम्बो बॉक्स में प्रदर्शित करने के लिए) अपने खोज परिणाम में कुछ गुण प्राप्त करने के लिए, तो आपको DirectorySearcher बनाने उन शामिल करने की ज़रूरत , आपको निश्चित रूप से temp.Properties["name"][0] को पकड़ने में सक्षम होना चाहिए और इसे कंबोबॉक्स की वस्तुओं की सूची में रखना चाहिए।

मैं वास्तव में क्या आप लाइन

DirectoryEntry ou = temp.GetDirectoryEntry(); 

जरूरत नाम संपत्ति हथियाने के बाद ..... इतना आसान, नहीं दिख रहा है

+1

OMG कुछ अपने आप को कि कोशिश नहीं कर के लिए लात मेरी कुछ के बाद परीक्षण के घंटे और त्रुटि कोडिंग: @ मुझे नहीं लगता कि यह सबसे अधिक उत्पादक है जो मैंने हाल ही में किया है ... –

+0

क्या ऐसा लगता है कि मैं खोज वस्तुओं को कॉम्बो बॉक्स आइटम में जोड़ने के लिए सही ढंग से एकत्र कर रहा हूं? –

+1

+1 इसे स्वयं परीक्षण करने के बाद और मेरा जवाब लिखने के बाद, मैं एक ही सटीक निष्कर्ष पर आया। –