예제 #1
0
        public bool InnerExecuteSearchRecursively(DirectoryEntry root, string filter, ADSearchConditions condition, ADSearchRecursivelyDelegate callback, object oParams, object lastResult, string[] properties)
        {
            bool bContinue = true;

            ADSearchConditions newCondition = new ADSearchConditions(condition);

            newCondition.Scope = SearchScope.OneLevel;

            ADSearchResultParams asrp = new ADSearchResultParams(root);

            asrp.LastResult = lastResult;

            List <SearchResult> resultList = ExecuteSearch(root, filter, condition, properties);

            foreach (SearchResult sr in resultList)
            {
                if (bContinue)
                {
                    if (callback != null)
                    {
                        asrp.LastResult = callback(sr, asrp, oParams, ref bContinue);

                        if (bContinue == false)
                        {
                            break;
                        }
                    }

                    string objClass = sr.Properties["objectClass"][1].ToString();

                    if (string.Compare(objClass, "organizationalUnit", true) == 0)
                    {
                        bContinue = InnerExecuteSearchRecursively(sr.GetDirectoryEntry(), filter, condition, callback, oParams, asrp.LastResult, properties);
                    }
                }
            }

            return(bContinue);
        }
예제 #2
0
        public bool InnerExecuteSearchRecursively(DirectoryEntry root, string filter, ADSearchConditions condition, ADSearchRecursivelyDelegate callback, object oParams, object lastResult, string[] properties)
        {
            bool bContinue = true;

            ADSearchConditions newCondition = new ADSearchConditions(condition);

            newCondition.Scope = SearchScope.OneLevel;

            ADSearchResultParams asrp = new ADSearchResultParams(root);

            asrp.LastResult = lastResult;

            List<SearchResult> resultList = ExecuteSearch(root, filter, condition, properties);

            foreach (SearchResult sr in resultList)
            {
                if (bContinue)
                {
                    if (callback != null)
                    {
                        asrp.LastResult = callback(sr, asrp, oParams, ref bContinue);

                        if (bContinue == false)
                            break;
                    }

                    string objClass = sr.Properties["objectClass"][1].ToString();

                    if (string.Compare(objClass, "organizationalUnit", true) == 0)
                    {
                        bContinue = InnerExecuteSearchRecursively(sr.GetDirectoryEntry(), filter, condition, callback, oParams, asrp.LastResult, properties);
                    }
                }
            }

            return bContinue;
        }
예제 #3
0
        public void ExecuteSearchRecursively(DirectoryEntry root, string filter, ADSearchConditions condition, ADSearchRecursivelyDelegate callback, object oParams, params string[] properties)
        {
            ExceptionHelper.FalseThrow <ArgumentNullException>(properties != null, "properties");

            if (Array.Exists(properties, data => data == "objectClass") == false)
            {
                properties = AppendToStringArray(properties, new string[] { "objectClass" });
            }

            InnerExecuteSearchRecursively(root, filter, condition, callback, oParams, null, properties);
        }
예제 #4
0
        public void ExecuteSearchRecursively(DirectoryEntry root, string filter, ADSearchConditions condition, ADSearchRecursivelyDelegate callback, object oParams, params string[] properties)
        {
            ExceptionHelper.FalseThrow<ArgumentNullException>(properties != null, "properties");

            if (Array.Exists(properties, data => data == "objectClass") == false)
                properties = AppendToStringArray(properties, new string[] { "objectClass" });

            InnerExecuteSearchRecursively(root, filter, condition, callback, oParams, null, properties);
        }