2009-12-29 14 views
5

मैं एडी से उपयोगकर्ता की समूह सदस्यता प्राप्त करने के बारे में कैसे सोच सकता हूं, अधिमानतः उसी पैटर्न का उपयोग कर रहा हूं जैसा कि मैं उपयोगकर्ता की संपत्ति संपत्ति को नीचे प्राप्त करने के लिए उपयोग करता हूं? मैं कई उदाहरण मिल गया है, लेकिन सभी उदाहरण तकनीकों का अन्तर्विभाजक सेट काफी छोटा है, और जकड़न और इस विभाग क्वेरी की सादगी का अभाव: .NET 3.5 परसक्रिय निर्देशिका से उपयोगकर्ता की समूह सदस्यता प्राप्त करें

 var adServer = ConfigurationManager.AppSettings["adServer"] ?? "localhost"; 
     var remoteRoot = new DirectoryEntry(GetRootPath(adServer)); 
     var searcher = new DirectorySearcher(remoteRoot, string.Format("(SAMAccountName={0})", shortUserName)); 

     searcher.PropertiesToLoad.Add("Department"); 
     SearchResult result = null; 
     result = searcher.FindOne(); 

उत्तर

6

आप कर रहे हैं? यदि हां, तो यह बहुत आसान है:

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN"); 

string userName = "yourUser"; 

UserPrincipal user = UserPrincipal.FindByIdentity(ctx, userName); 

PrincipalSearchResult<Principal> results = user.GetAuthorizationGroups(); 

अपने उपयोगकर्ता का पता लगाएं, और फिर अपने उपयोगकर्ता प्रिंसिपल पर .GetAuthorizationGroups() कहते हैं - कि सभी समूहों उपयोगकर्ता अपने प्राथमिक समूह शामिल हैं, अंतर्गत आता है देता है, और किसी भी नेस्टेड समूह सदस्यता।

एडी से निपटने के लिए .NET 3.5 में अधिक नई भलाई के लिए यह MSDN article देखें।

.NET 2.0 में, चीजें बहुत गड़बड़ हैं ...

+0

धन्यवाद। यह आधा काम कर रहा है, लेकिन जब मुझे GetAuthorizationGroups() – ProfK

+0

पर कॉल किया गया है, तो मुझे "डोमेन जानकारी तक नहीं पहुंच सकता" (मुझे ऐसा कुछ) त्रुटि मिलती है जब आपने प्रिंसिपल संदर्भ बनाते समय अपना नेटबीओएस डोमेन नाम निर्दिष्ट किया था? जैसे "Yourcompany.com" के बजाय, "YOURDOMAIN"? –

+0

मेरे लिए काम करता है। मुझे बहुत काम बचाया! धन्यवाद – paul

संबंधित मुद्दे