4

次のコードを使用して、企業のLDAPリストをクエリしています。問題は、文字列全体を書き出すことです。文字列の解析とは別に、グループ名を書き出す簡単な方法はありますか?

using System;
using System.Collections.Generic;
using System.DirectoryServices;
using System.Linq;

public class Test
{
    public static void Main()
    {
        string userName = "USER";

        DirectoryEntry directoryEntry = new DirectoryEntry("LDAP://dc=ABC,dc=com");

        DirectorySearcher search = new DirectorySearcher();

        search.Filter = String.Format("(cn={0})", userName);
        search.PropertiesToLoad.Add("memberOf");

        List<string> groupsList = new List<string>();

        SearchResult result = search.FindOne();
        if (result != null)
        {
            int groupCount = result.Properties["memberOf"].Count;

            for (int counter = 0; counter < groupCount; counter++)
            {
                groupsList.Add((string)result.Properties["memberOf"][counter]);
            }
        }

        List<string> list = new List<string>();
        list = groupsList.ToList();

        for (int i = 0; i < list.Count; i++)
        {
            Console.WriteLine(list[i]);
        }

    }

}
4

1 に答える 1

2

解決策はそれよりも簡単だと思います。

ユーザーのグループを見つけようとしていますよね?

private void button1_Click(object sender, EventArgs e)
{
   List<string> userGroups = new List<string>();
   PrincipalContext LdapContext = new PrincipalContext(ContextType.Domain, domainName);
   UserPrincipal user = UserPrincipal.FindByIdentity(LdapContext, userName);

   foreach (var group in user.GetGroups())
   {
       userGroups.Add(group.Name);
   }
}
于 2012-11-05T12:28:41.083 に答える