C#在AD中搜索用户

时间:2014-09-10 05:11:25

标签: c# active-directory

我不是天生的程序员,所以我提前道歉。我进行了广泛的搜索,找到了10种不同方法的点点滴滴做一件事。我正在尝试做的事情似乎非常简单,但我想念它...我需要使用名字和姓氏搜索Active Directory并显示列表框中匹配的所有用户。有人能指出我正确的方向,或者如果有人已经问过同样的问题,请将我链接到它吗?提前谢谢!

2 个答案:

答案 0 :(得分:1)

尝试这样的事情: -

DirectorySearcher d = new DirectorySearcher(somevalue);    
d.Filter = string.Format("(&(objectCategory=person)(objectClass=user)(givenname={0})(sn={1}))", firstname, lastname);

同样来自How to search for users in Active Directory with C#

//Create a shortcut to the appropriate Windows domain
PrincipalContext domainContext = new PrincipalContext(ContextType.Domain,
                                                      "myDomain");

//Create a "user object" in the context
using(UserPrincipal user = new UserPrincipal(domainContext))
{
 //Specify the search parameters
 user.Name = "he*";

 //Create the searcher
 //pass (our) user object
 using(PrincipalSearcher pS = new PrincipalSearcher())
 {
  pS.QueryFilter = user;

  //Perform the search
  using(PrincipalSearchResult<Principal> results = pS.FindAll())
  {
   //If necessary, request more details
   Principal pc = results.ToList()[0];
   DirectoryEntry de = (DirectoryEntry)pc.GetUnderlyingObject();
  }
 }
} 
//Output first result of the test
MessageBox.Show(de.Properties["mail"].Value.ToString());

答案 1 :(得分:0)

当然在发布后不久我找到了答案:)

 // create your domain context
            PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "servername","username","password");

            UserPrincipal qbeUser = new UserPrincipal(ctx);
            qbeUser.GivenName = "fname";
             qbeUser.Surname = "lname";
          //   qbeUser.DisplayName= "fname lname";    

            PrincipalSearcher srch = new PrincipalSearcher(qbeUser);

            // find all matches
            foreach (var found in srch.FindAll())
            {
                lstUser.Items.Add(found.ToString());
            }

这是链接:Search Users in Active Directory based on First Name, Last Name and Display Name