在OU中查找用户

时间:2011-01-20 16:23:47

标签: c# active-directory

我需要在OU中搜索用户。到目前为止我的解决方案如下: -

// s = "ou=myou1,ou=myou2,ou=muou3,dc=myad,dc=com" & t = "myad.com"

PrincipalContext context = new PrincipalContext(ContextType.Domain, t, s);
UserPrincipal user = UserPrincipal.FindByIdentity(context, "boborwhoever");
if (user != null) found him!

(请原谅显而易见的伪代码,但你得到了图片)

我遇到的问题是虽然我的userPrincipal用户已经填充并且我发现'bob'如果他在'myou3'我可以将s更改为“ou = myou1,dc = myad,dc = com”并仍然找到“鲍勃”。所以似乎UserPrincipal.FindByIdentity也检查子OU。

如何检查OU说明的?或者也许我哩了,应该以更好的方式做整件事: - )

由于 史蒂夫

1 个答案:

答案 0 :(得分:1)

我就是这样做的

using System.DirectoryServices

DirectoryEntry de = new DirectoryEntry();
de.Path = "LDAP://**Your connection string here**";
de.AuthenticationType = AuthenticationTypes.Secure;

DirectorySearcher search = new DirectorySearcher(de);
search.Filter = "(SAMAccountName=" + account + ")";

//What properties do we want to return?
search.PropertiesToLoad.Add("displayName");
search.PropertiesToLoad.Add("mail");

search.SearchScope = SearchScope.OneLevel //this makes it only search the specified level

SearchResult result = search.FindOne();

if (result != null)
{
     //Get Him!    }
else
{
    //Not Found
}

在sharepoint工作流程中使用了它,它运行良好。