如果我设置了.NET DirectoryEntry.Path来是这样的:
LDAP:// CN =约翰·史密斯,OU =组名称,DC =例如,DC = COM
一切都很正常,我得到我所需要的的DirectoryEntry。但是,我不知道用户的真正的通用名称(CN)。我只知道他们的用户名,JOHN.SMITH。
那么,如何可以查询用户名?我已经尝试了所有以下的不成功:
LDAP://CN=John.Smith,OU=Group名称,DC =例如,DC = COM
LDAP://sAMAccountName=John.Smith,OU=Group名称,DC =例如,DC = COM
LDAP://userPrincipalName=John.Smith,OU=Group名称,DC =例如,DC = COM
LDAP://userPrincipalName=John.Smith@example.com,OU=Group名称,DC =例如,DC = COM
LDAP://uid=John.Smith,OU=Group名称,DC =例如,DC = COM
LDAP://o=John.Smith,OU=Group名称,DC =例如,DC = COM
解决方案
您不能只是通过创建一个LDAP字符串进行查询 - 你需要使用code为
是这样的:
的DirectoryEntry deRoot =新的DirectoryEntry(LDAP:// yourserver / CN =用户,DC = YourCompany,DC = COM);
DirectorySearcher从dsFindUser =新DirectorySearcher从(deRoot);
dsFindUser.SearchScope = SearchScope.SubTree;
dsFindUser.PropertiesToLoad.Add(SN); //姓=姓氏
dsFindUser.PropertiesToLoad.Add(给定名称); // 名字
dsFindUser.Filter =的String.Format((及(objectCategory属性=人)(ANR = {0})),yourUserName);
信息搜索结果rseult = dsFindUser.FindOne();
如果(结果!= NULL)
{
如果(result.Properties [SN]!= NULL)
{
字符串的lastName = result.Properties [SN] [0]的ToString();
}
如果(result.Properties [给定名称]!= NULL)
{
字符串的lastName = result.Properties [给定名称] [0]的ToString();
}
}
完整的MSDN文档上的System.DirectoryServices.DirectorySearcher类可以在MSDN上找到 - 它有很多附加的属性和设置
如果您使用的是.NET 3.5,事情已经得到了相当多的用程序来处理用户和组强类型的库更容易 - 看看这个优秀的