2012-08-28 8 views
5

हैलो मैं अपने विंडोज फॉर्म प्रोग्राम में एक फ़ंक्शन जोड़ने की कोशिश कर रहा हूं जो उपयोगकर्ता को टेक्स्टबॉक्स में टाइप करने की अनुमति देता है, जिसमें वे कंप्यूटर या कंप्यूटर खोजना चाहते हैं सक्रिय निर्देशिका। उपयोगकर्ता टेक्स्ट स्ट्रिंग में खोज स्ट्रिंग इनपुट करेगा, फिर एक बटन दबाएगा और कंप्यूटर जो उस खोज परिणाम से मेल खाते हैं, एक अलग खोज बॉक्स में दिखाई देंगे। अब तक मेरा कोड है।उपयोगकर्ता इनपुट का उपयोग कर कंप्यूटर नाम के लिए सक्रिय निर्देशिका खोजें

मैं भी चाहते हैं प्रत्येक कंप्यूटर का नाम इस तरह के रूप में एक अलग लाइन पर होने के लिए:

computername1    
computername2   
computername3 

धन्यवाद!

यह वही अंदर बटन की तरह लग रहा है:

List<string> hosts = new List<string>(); 
DirectoryEntry de = new DirectoryEntry(); 
de.Path = "LDAP://servername"; 

try 
{ 
    string adser = txtAd.Text; //textbox user inputs computer to search for 

    DirectorySearcher ser = new DirectorySearcher(de); 
    ser.Filter = "(&(ObjectCategory=computer)(cn=" + adser + "))"; 
    ser.PropertiesToLoad.Add("name"); 

    SearchResultCollection results = ser.FindAll(); 

    foreach (SearchResult res in results) 
    //"CN=SGSVG007DC" 
    { 
     string computername = res.GetDirectoryEntry().Properties["Name"].Value.ToString(); 
     hosts.Add(computername); 
     //string[] temp = res.Path.Split(','); //temp[0] would contain the computer name ex: cn=computerName,.. 
     //string adcomp = (temp[0].Substring(10)); 
     //txtcomputers.Text = adcomp.ToString(); 
    } 

    txtcomputers.Text = hosts.ToString(); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(ex.ToString()); 
} 
finally 
{ 
    de.Dispose();//Clean up resources 
} 
+0

आपको [अपने पिछले कुछ प्रश्नों के उत्तर स्वीकार करना चाहिए] (http://meta.stackexchange.com/q/5234/153998)। यह उन लोगों के लिए आपकी प्रशंसा दिखाता है जिन्होंने * आपकी मदद करने के लिए अपना समय बिताया *, और इससे संभावनाएं बढ़ जाएंगी कि वे आपके भविष्य के किसी भी प्रश्न का उत्तर देंगे। –

उत्तर

7

आप .NET 3.5 और ऊपर पर हैं, तो आप System.DirectoryServices.AccountManagement (S.DS.AM) नाम स्थान की जांच करनी चाहिए। इसके बारे में यहाँ सब पढ़ें:

मूल रूप से, आप एक डोमेन संदर्भ को परिभाषित करने और आसानी से ईस्वी में उपयोगकर्ताओं और/या समूहों पा सकते हैं:

// set up domain context 
using(PrincipalContext ctx = new PrincipalContext(ContextType.Domain)) 
{ 
    // find a computer 
    ComputerPrincipal computer = ComputerPrincipal.FindByIdentity(ctx, "SomeComputerName"); 

    if(computer != null) 
    { 
     // do something here....  
    } 
}  

हैं आपको एक कंप्यूटर खोजने की आवश्यकता नहीं है, लेकिन कंप्यूटर की पूरी सूची खोजें, आप नए PrincipalSearcher इंटरफ़ेस का उपयोग कर सकते हैं, जो मूल रूप से अल आपको "QBE" (क्वेरी-बाय-उदाहरण) ऑब्जेक्ट सेट अप करने के लिए कम करता है, जिसे आप खोज रहे हैं, खोज मानदंडों को परिभाषित करते हैं, और फिर उन मानदंडों के लिए मिलान की खोज करते हैं।

नया एसडीएस.एएम एडी में उपयोगकर्ताओं और समूहों के साथ खेलने के लिए वास्तव में आसान बनाता है!

+0

धन्यवाद, उसमें बीमार देखो। – Boundinashes6