Exemplo n.º 1
0
        private void FillUsersWithSameGroup(ref PanelItemBase parent, ref ICollection <PanelItemBase> result, string startPath, string group)
        {
            using (var searcher = new DirectorySearcher())
            {
                searcher.SearchRoot = new DirectoryEntry(startPath);
                searcher.PageSize   = Int32.MaxValue;
                searcher.Filter     = "(objectCategory=person)";
                SetupPropertiesToLoad(searcher);
                searcher.PropertiesToLoad.Add(Constants.MEMBER_OF);
                try
                {
                    var results = searcher.FindAll();
                    foreach (SearchResult row in results)
                    {
                        // skip disabled users
                        var userAccControl = int.Parse(LdapUtils.SearchResult_GetString(row, Constants.ACCOUNT_CONTROL));
                        if ((userAccControl & 2) != 0)
                        {
                            continue;
                        }

                        var list = row.Properties[Constants.MEMBER_OF];
                        if (list.Contains(group))
                        {
                            result.Add(BuildUserFromSearchResult(parent, row));
                        }
                    }
                    results.Dispose();
                }
                catch (Exception ex)
                {
                    Debug.Print(ex.Message);
                }
            }
        }
Exemplo n.º 2
0
        private UserPanelItem BuildUserFromSearchResult(PanelItemBase parent, SearchResult row)
        {
            var user = new UserPanelItem(parent, LdapUtils.SearchResult_GetString(row, Constants.CN));

            user.AdsPath        = LdapUtils.SearchResult_GetString(row, Constants.ADSPATH);
            user.Title          = LdapUtils.SearchResult_GetString(row, Constants.TITLE);
            user.WorkPhone      = LdapUtils.SearchResult_GetString(row, Constants.WORK_PHONE);
            user.Office         = LdapUtils.SearchResult_GetString(row, Constants.OFFICE);
            user.Department     = LdapUtils.SearchResult_GetString(row, Constants.DEPARTMENT);
            user.Email          = LdapUtils.SearchResult_GetString(row, Constants.EMAIL);
            user.Company        = LdapUtils.SearchResult_GetString(row, Constants.COMPANY);
            user.Nickname       = LdapUtils.SearchResult_GetString(row, Constants.NICKNAME);
            user.LegacyLogon    = LdapUtils.SearchResult_GetString(row, Constants.LEGACY_LOGON);
            user.Description    = LdapUtils.SearchResult_GetString(row, Constants.DESCRIPTION);
            user.UserAccControl = int.Parse(LdapUtils.SearchResult_GetString(row, Constants.ACCOUNT_CONTROL));
            user.EmployeeID     = LdapUtils.SearchResult_GetString(row, Constants.EMPLOYEE_ID);
            //user.WorkPhone = "0x" + user.UserAccControl.ToString("X");
            //user.Description = row["lockoutTime"].ToString();
            return(user);
        }
Exemplo n.º 3
0
        private void FillUsers(ref PanelItemBase parent, ref ICollection <PanelItemBase> result, string startPath)
        {
            using (var searcher = new DirectorySearcher())
            {
                // execute filter query to Active Directory
                searcher.SearchRoot = new DirectoryEntry(startPath);
                searcher.PageSize   = Int32.MaxValue;
                searcher.Filter     = "(objectCategory=person)"; // lockoutTime
                //var filter = "(&(&(|(&(objectCategory=person)(objectSid=*)(!samAccountType:1.2.840.113556.1.4.804:=3))(&(objectCategory=person)(!objectSid=*))(&(objectCategory=group)(groupType:1.2.840.113556.1.4.804:=14)))objectCategory=user)(cn=khmau.isup_builder)))";
                //var filter = "(&(&(&(objectCategory=person)(objectClass=user)(lockoutTime:1.2.840.113556.1.4.804:=4294967295))))";
                //var filter = "(&(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=16))";
                //var filter = "((!userAccountControl:1.2.840.113556.1.4.803:=2))";
                //var filter = "(!(userAccountControl:1.2.840.113556.1.4.803:=2))";
                SetupPropertiesToLoad(searcher);
                try
                {
                    var results = searcher.FindAll();
                    foreach (SearchResult row in results)
                    {
                        // skip disabled users
                        var userAccControl = int.Parse(LdapUtils.SearchResult_GetString(row, Constants.ACCOUNT_CONTROL));
                        if ((userAccControl & 2) != 0)
                        {
                            continue;
                        }

                        result.Add(BuildUserFromSearchResult(parent, row));
                    }
                    results.Dispose();
                }
                catch (Exception ex)
                {
                    Debug.Print(ex.Message);
                }
            }
        }