} // end RetObjValues() /// <summary> /// Query of group objects and its properties /// </summary> /// <param name="objContentMsg"></param> /// <param name="retval"></param> /// <param name="objContentNO"></param> /// <param name="adgrpin"></param> /// <returns>object that reflects the queried group object</returns> public ADgroupobjInfo RetGroupValues(ref string objContentMsg, out int retval, out int objContentNO, ADgroupobjInfo adgrpin) { retval = 0; string objfilter = ""; var adgrp = new ADgroupobjInfo(); objfilter = "(&(objectClass=group)(distinguishedName=" + adgrpin.DistinguishedName + "))"; try { string[] myProps = new string[] { "distinguishedName", "cn", "managedBy", "mail", "samAccountName", "description", "notes", "memberOf", "displayName ", "member", "memberOf" }; using (DirectoryEntry entry = new DirectoryEntry(rootDSE)) using (DirectorySearcher mySearcher = new DirectorySearcher(entry, objfilter, myProps)) { using (SearchResultCollection result = mySearcher.FindAll()) { if (result.Count > 0) { foreach (SearchResult rs in result) { ResultPropertyValueCollection memberCollection = rs.Properties["member"]; adgrp.Member = new List <string>(); if ((String.IsNullOrEmpty(memberCollection.ToString()))) { adgrp.Member.Add(""); } else { if (memberCollection.Count > 0) { for (int j = 0; j < memberCollection.Count; j++) { adgrp.Member.Add(memberCollection[j].ToString()); } } else { adgrp.Member.Add(""); } } ResultPropertyValueCollection memberOfCollection = rs.Properties["memberOf"]; adgrp.MemberOf = new List <string>(); if ((String.IsNullOrEmpty(memberOfCollection.ToString()))) { adgrp.MemberOf.Add(""); } else { if (memberOfCollection.Count > 0) { for (int j = 0; j < memberOfCollection.Count - 1; j++) { adgrp.MemberOf.Add(memberOfCollection[j].ToString()); } } else { adgrp.MemberOf.Add(""); } } adgrp.DistinguishedName = rs.Properties["distinguishedName"][0].ToString(); adgrp.SamAccountName = rs.Properties["SamAccountName"][0].ToString(); adgrp.CN = rs.Properties["cn"][0].ToString(); if ((String.IsNullOrEmpty(rs.Properties["description"].ToString()))) { adgrp.Description = ""; } else { if (rs.Properties["description"].Count > 0) { adgrp.Description = rs.Properties["description"][0].ToString(); } else { adgrp.Description = ""; } } if ((String.IsNullOrEmpty(rs.Properties["notes"].ToString()))) { adgrp.Notes = ""; } else { if (rs.Properties["notes"].Count > 0) { adgrp.Notes = rs.Properties["notes"][0].ToString(); } else { adgrp.Notes = ""; } } if ((String.IsNullOrEmpty(rs.Properties["displayName"].ToString()))) { adgrp.DisplayName = ""; } else { if (rs.Properties["displayName"].Count > 0) { adgrp.DisplayName = rs.Properties["displayName"][0].ToString(); } else { adgrp.DisplayName = ""; } } if ((String.IsNullOrEmpty(rs.Properties["mail"].ToString()))) { adgrp.Mail = ""; } else { if (rs.Properties["mail"].Count > 0) { adgrp.Mail = rs.Properties["mail"][0].ToString(); } else { adgrp.Mail = ""; } } if ((String.IsNullOrEmpty(rs.Properties["managedBy"].ToString()))) { adgrp.ManagedBy = ""; } else { if (rs.Properties["managedBy"].Count > 0) { adgrp.ManagedBy = rs.Properties["managedBy"][0].ToString(); } else { adgrp.ManagedBy = ""; } } } objContentNO = 1; objContentMsg = "ok"; } else { objContentMsg = "Searched object not found: " + adgrpin.DistinguishedName; objContentNO = 0; } } } retval = 0; } catch (Exception ex) { objContentMsg += ex.Message + "\n" + ex.StackTrace; objContentNO = 0; retval = 1; } return(adgrp); } // end public List<ADgroupobjInfo> RetGroupValues
} // end GroupMatches_Disply(List<string> groupMatches) /// <summary> /// Gathers the members of the selected group and displays their clear name. /// </summary> protected void GroupMembers_Display() { ViewState["agGrpSelected"] = drpdAuthUsrRWGroups.SelectedValue; string objContentMsg = ""; int retval; int objContentNO; var adgrpin = new ADgroupobjInfo(); adgrpin.DistinguishedName = drpdAuthUsrRWGroups.SelectedValue; var adrw = new ADrwInfo(); var adgrpout = adrw.RetGroupValues(ref objContentMsg, out retval, out objContentNO, adgrpin); if (retval == 0) { var sbMember = new System.Text.StringBuilder(); var memberDetails = new System.Collections.Generic.Dictionary <string, string>(); string objsearchfilter = "userdn"; foreach (var member in adgrpout.Member) { string objContentMsgMem = ""; int retvalMem; var adusrin = new ADobjInfo(); adusrin.ADdistinguishedName = member; var adrwi = new ADrwInfo(); var adusrout = adrwi.RetObjValues(ref objContentMsgMem, out retvalMem, objsearchfilter, adusrin); if ((retvalMem == 0) && (!String.IsNullOrEmpty(adusrout.ADUserID))) { string usrValue = ""; if (String.IsNullOrEmpty(adusrout.ADfullName)) { usrValue = adusrout.ADUserID; } else { usrValue = adusrout.ADfullName; } memberDetails.Add(adusrout.ADUserID, usrValue); } } lstGroupMembers.Items.Clear(); var items = from pair in memberDetails orderby pair.Value ascending select pair; foreach (KeyValuePair <string, string> pair in items) { var itm = new ListItem(pair.Value, pair.Key); lstGroupMembers.Items.Add(itm); } if (String.IsNullOrEmpty(adgrpout.Description)) { lblADGroupsNotes.Text = " "; } else { lblADGroupsNotes.Text = adgrpout.Description; } } else { string foo = "bar"; } } // end GroupMembers_Display()