I have a textbox field...I provide name in it (for example Lenon, John)
Function have to return all gruups with Lenon, John in "Managed by" field.

I've written code to search all groups with managedby field provided by user

String querymanagedby(string userName)
        {
            try
            {
                SearchResult result;
                DirectorySearcher search = new DirectorySearcher();
                search.Filter = String.Format("managedby={0})", userName);
                search.PropertiesToLoad.Add("cn");
                result = search.FindOne();

                StringBuilder userList = new StringBuilder();
                if (result != null)
                {
                    for (int counter = 0; counter <
                             result.Properties["managedby"].Count; counter++)
                    {
                        string group = (string)result.Properties["managedby"][counter];
                        string property = getproperty("LDAP://" + group, "samAccountName");
                        userList.Append(property);
                        userList.Append("\r\n");
                    }
                }
                return userList.ToString();
            }
            catch (Exception)
            {
                return null;
            }
        }

Unfortunately it doesn't work - can you help me?
THX!

Program should work like that:

Please provide name: Lenon, John

and now program should list:

GROUP 1 is managed by Lenon, John
GROUP 2 is managed by Lenon, John
GROUP 3 is managed by Lenon, John

String querymanagedby(string userName)
        {
            try
            {
                string connectionPrefix = "LDAP://" + domain;
                DirectoryEntry entry = new DirectoryEntry(connectionPrefix);
                DirectorySearcher search = new DirectorySearcher(entry);
                search.Filter = String.Format("managedby={0})", userName);
                search.PropertiesToLoad.Add("samAccountName");
                StringBuilder userList = new StringBuilder();
                SearchResult result;
                SearchResultCollection resultcol = search.FindAll();
                if (resultcol != null)
                {
                    for (int counter = 0; counter < resultcol.Count; counter++)
                    {
                        result = resultcol[counter];
                        userList.Append((String)result.Properties["samAccountName"][0]);
                        userList.Append("\r\n");
                    }
                }
                return userList.ToString();
            }
            catch (Exception)
            {
                return null;
            }
        }

I have modified the code and it still return nothing. :(
Any ideas?

In your code, you have some errors at this line of code

search.Filter = String.Format[B]("managedby={0})"[/B], userName);

Correct it to

search.Filter = String.Format[B]("managedby={0}")[/B], userName);

and try once. See only the Bolded part of the code.

In your code, you have some errors at this line of code

search.Filter = String.Format[B]("managedby={0})"[/B], userName);

Correct it to

search.Filter = String.Format[B]("managedby={0}")[/B], userName);

and try once. See only the Bolded part of the code.

Sorry but you must be kidding. The Error he corrected is unfortunately an error but the correction is worse.

before:

search.Filter = String.Format[B]("managedby={0})"[/B], userName);

after:

search.Filter = String.Format("managedby=[B]([/B]{0})", userName);

See the difference? With the correction he provided you String.Format won't work.


I guess the Problem is youre search string. If you know that everything else around in your code is correct (because you copied it somewhere) and you change the filter...

final:

deSearch.Filter = String.Format("(managedby={0})", userName);

In your code, you have some errors at this line of code

search.Filter = String.Format[B]("managedby={0})"[/B], userName);

Correct it to

search.Filter = String.Format[B]("managedby={0}")[/B], userName);

and try once. See only the Bolded part of the code.

corrected code doesnt give any results too :(
new modification of my code:

String querymanagedby(string userName)
        {
            try
            {
                string connectionPrefix = "LDAP://" + domain;
                DirectoryEntry entry = new DirectoryEntry(connectionPrefix);
                DirectorySearcher search = new DirectorySearcher(entry);
                search.Filter = "(&(objectClass=group)(|(managedby={0}" + userName + ")))";
                search.PropertiesToLoad.Add("samAccountName");
               
                StringBuilder userList = new StringBuilder();
                SearchResult result;
                SearchResultCollection resultcol = search.FindAll();
                if (resultcol != null)
                {
                    for (int counter = 0; counter < resultcol.Count; counter++)
                    {
                        result = resultcol[counter];
                        userList.Append((String)result.Properties["samAccountName"][0]);
                        userList.Append("\r\n");
                    }
                }
                return userList.ToString();
            }
            catch (Exception)
            {
                return null;
            }
        }

Now he thinks a lot - so probably it search for sth..but still no results

First of all I have nearly the same code in one of my programms looking for users in a group. But before accessing them I have to cast to DirectoryEntry.

DirectoryEntry deUser = new DirectoryEntry(ADPath + "/" + pcoll["member"][l].ToString())

Also please speak with your local Active Directory administrator if you are allowed to read the field by code. A colleage of mine just walked inside and told me about a field that he was not allowed to read from.

I have all admin rights to query all things i want...
And about the line You have provided...
So You think I should make another directory entry for every result found in this query?...

I had the same problem and I just figured it out. I thought you might want to know.

For the filter, I was putting just the username instead of the full distinguished name. As soon as I changed it to be this filter it worked fine.

For example here is my filter (&(objectCategory=group)(managedby=CN=mckaaa,OU=INFO,OU......))

If you look under Active Directory, Attribute editor tab, you will find it's not a string but a distinguished name.

Andrea

It works... :D
The problem was {0} after managedby...
and ofcourse function needed full DN as a input

THX guys!!!!!!!!!!!!!!

This question has already been answered. Start a new discussion instead.