यदि आप सक्रिय निर्देशिका में नए हैं, तो मेरा सुझाव है कि आपको यह समझना चाहिए कि कैसे सक्रिय निर्देशिका पहले डेटा संग्रहीत करती है।
सक्रिय निर्देशिका वास्तव में एक LDAP सर्वर है। LDAP सर्वर में संग्रहीत वस्तुएँ पदानुक्रम में संग्रहीत की जाती हैं। यह बहुत समान है कि आप अपनी फाइल को अपने फाइल सिस्टम में स्टोर करें। इसलिए इसे डायरेक्टरी सर्वर और एक्टिव डायरेक्टरी का नाम मिला
सक्रिय निर्देशिका पर कंटेनरों और वस्तुओं को एक द्वारा निर्दिष्ट किया जा सकता है distinguished name। प्रतिष्ठित नाम इस प्रकार है CN=SomeName,CN=SomeDirectory,DC=yourdomain,DC=com। एक पारंपरिक संबंधपरक डेटाबेस की तरह, आप LDAP सर्वर के खिलाफ क्वेरी चला सकते हैं। इसे LDAP क्वेरी कहा जाता है।
.NET में LDAP क्वेरी को चलाने के कई तरीके हैं। आप से या SearchRequest से DirectorySearcher का उपयोग कर सकते हैं ।System.DirectoryServicesSystem.DirectoryServices.Protocol
अपने प्रश्न के लिए, चूंकि आप विशेष रूप से उपयोगकर्ता प्रिंसिपल ऑब्जेक्ट को खोजने के लिए कह रहे हैं, मुझे लगता है कि सबसे सहज तरीका प्रिंसिपलसर्चर से उपयोग करना है System.DirectoryServices.AccountManagement। आप आसानी से Google से कई अलग-अलग उदाहरण पा सकते हैं। यहां एक नमूना है जो आप के लिए पूछ रहे हैं वही कर रहा है।
using (var context = new PrincipalContext(ContextType.Domain, "yourdomain.com"))
{
using (var searcher = new PrincipalSearcher(new UserPrincipal(context)))
{
foreach (var result in searcher.FindAll())
{
DirectoryEntry de = result.GetUnderlyingObject() as DirectoryEntry;
Console.WriteLine("First Name: " + de.Properties["givenName"].Value);
Console.WriteLine("Last Name : " + de.Properties["sn"].Value);
Console.WriteLine("SAM account name : " + de.Properties["samAccountName"].Value);
Console.WriteLine("User principal name: " + de.Properties["userPrincipalName"].Value);
Console.WriteLine();
}
}
}
Console.ReadLine();
ध्यान दें कि AD उपयोगकर्ता ऑब्जेक्ट पर, कई विशेषताएँ हैं। विशेष रूप से, givenNameआपको देंगे First Nameऔर snआपको देंगे Last Name। उपयोगकर्ता नाम के बारे में। मुझे लगता है कि आप उपयोगकर्ता लॉगऑन नाम का मतलब है। ध्यान दें कि AD उपयोगकर्ता ऑब्जेक्ट पर दो लॉगऑन नाम हैं। एक है samAccountName, जिसे पूर्व-विंडोज 2000 उपयोगकर्ता लॉगऑन नाम के रूप में भी जाना जाता है। userPrincipalNameआमतौर पर विंडोज 2000 के बाद उपयोग किया जाता है।