2011-07-16 13 views
9

मेरे पास एक सी # 4.0 प्रोग्राम काम कर रहा है जो सभी सदस्यों को एक विशिष्ट एडी समूह के लिए पुनर्प्राप्त करता है। इस एडी समूह में अन्य एडी समूह अन्य सदस्य हैं। मुझे अपने कार्यक्रम को पहचान के लिए चाहिए कि यह एक समूह है और उस समूह के सदस्यों को पुनः प्राप्त करें।सक्रिय निर्देशिका नेस्टेड समूह

मुझे पता है कि मुझे एक पुनरावर्ती कार्यक्रम लिखने की आवश्यकता है, लेकिन मैं उम्मीद कर रहा था कि वहां से किसी ने पहले से ही ऐसा किया होगा। यदि नहीं, तो क्या कोई मुझे एडी संपत्ति विशेषता बता सकता है कि सदस्य वास्तव में एक समूह है?

+0

यह लिंक उपयोगी हो सकता है: http://en.csharp-online.net/User_Management_with_Active_Directory%E2%80%94Retrieving_tokenGroups_from_ADAM –

उत्तर

-1

मान लें कि आप सक्रिय डायरेक्टरी में एलडीएपी व्यू का उपयोग कर रहे हैं, जो विशेषता आप खोज रहे हैं उसे "ऑब्जेक्ट क्लास" कहा जाता है। एक समूह "groupOfNames" के ऑब्जेक्ट क्लास के साथ दिखाई देता है, मुझे विश्वास है; संभवतः "समूह"। वैकल्पिक रूप से, यह देखने के लिए कि ऑब्जेक्ट क्लास के बावजूद ऑब्जेक्ट में कोई "सदस्य" है, और यदि ऐसा होता है, तो मान लें कि यह किसी प्रकार का समूह और रिकर्स है।

13

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

मूल रूप से, आप एक डोमेन संदर्भ परिभाषित कर सकते हैं और आसानी से ईस्वी में उपयोगकर्ताओं और/या समूहों पाते हैं। इसके अलावा: GroupPrincipal में GetMembers नामक एक विधि है जो उस समूह के सभी सदस्यों को सूचीबद्ध करेगी - वैकल्पिक रूप से, यह आपके लिए इतनी बार फिर से कर देगी!

// set up domain context 
PrincipalContext ctx = new PrincipalContext(ContextType.Domain); 

// find the group you're interested in 
GroupPrincipal myGroup = GroupPrincipal.FindByIdentity(ctx, "SomeGroup"); 

// if you found it - get its members 
if (myGroup != null) 
{ 
    // if your call the GetMembers, you can optionally specify a "Recursive" flag - done here 
    var allMembers = myGroup.GetMembers(true); 
} 

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

+0

S.DS.AM पर टिप के लिए धन्यवाद। यह सिर्फ मुझे एक पुनरावर्ती कार्यक्रम लिखने का दर्द बचाया !!!! –

+0

'GetMembers (true)' की सीमा है, उदा। 'डोमेन उपयोगकर्ता 'बिल्कुल वापस नहीं आये हैं। उन्हें प्राप्त करने के लिए आपको 'GetMembers (false)' को लगातार कॉल करना होगा। –

+0

@WernfriedDomscheit अन्य सीमा क्या हैं? –

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