如何使用c#中的DirectorySearcher从Active Directory获取特定用户名

时间:2016-09-06 10:17:40

标签: c#-4.0 active-directory

正如您的许多答案所示,我可以使用PrincipalContextPrincipalSearcher获取特定用户名的详细信息,但我很想知道过滤器的确切语法和用法DirectorySearcher

任何人都可以帮助我找到正确的道路来了解更多信息,因为我有一个DirectorySearcher过滤器,但我没有得到预期的结果。

这是我的代码

Dictionary<string, string> Ids = new Dictionary<string, string>();

DirectoryEntry entry = new DirectoryEntry(ConfigurationManager.AppSettings["LDAPPath"].ToString());

DirectorySearcher dSearcher = new DirectorySearcher(entry);
string guid1 = string.Empty;
dSearcher.Filter = "(&(objectClass=user)(cn=SomeUserName"))";

dSearcher.PropertiesToLoad.Add("isDeleted");
dSearcher.PropertiesToLoad.Add("objectGUID");
dSearcher.PropertiesToLoad.Add("objectSid");

SearchResult sResultSet = dSearcher.FindOne();

if (sResultSet.Properties["objectGUID"][0].GetType() == typeof(Byte[]))
{
    Byte[] objByteArray = (Byte[])sResultSet.Properties["objectGUID"][0];
    Guid objGUID = new Guid(objByteArray);
    Ids.Add("GUID", objGUID.ToString());
}

if (sResultSet.Properties["objectSid"][0].GetType() == typeof(Byte[]))
{
    Byte[] sidInBytes = (Byte[])sResultSet.Properties["objectSid"][0]; ;
    var objSid = new SecurityIdentifier(sidInBytes, 0);
    Ids.Add("SID", objSid.ToString());
}

return Ids;

我想要做的是通过传递用户名来获取用户的指示,但我没有得到结果而且我不知道我在这段代码中做错了什么。

当我使用PrincipalContextPrincipalSearcher类时,我得到了正确的结果。请帮我。谢谢

0 个答案:

没有答案