在AD中搜索LastName和FirstName

时间:2016-09-02 14:04:47

标签: c# active-directory

我想检索使用AD在他/她的机器中登录的用户的名字和姓氏。我使用以下代码:

string server = ConfigurationManager.AppSettings["ActiveDirectory.Server"];

DirectoryEntry entry = new DirectoryEntry(@"LDAP://" + server);
DirectorySearcher searcher = new DirectorySearcher(entry);

User user = GetUser(entry);

searcher.Filter = "sAMAccountName=" + user.UserAD;
searcher.PropertiesToLoad.Add("memberof");
SearchResult result = searcher.FindOne();

private static User GetUser(DirectoryEntry userEntry)
{
    Usuario user = new User();
    string[] username = HttpContext.Current.Request.ServerVariables["AUTH_USER"].Split('\\');

    //THIS IS WHAT I NEED BUT IT DOES RETURN null.
    //User.Name= (string)userEntry.Properties["givenName"].Value;
    //User.LastName= (string)userEntry.Properties["sn"].Value;

    user.Domain = username[0];
    user.UserAD = username[1];

    return user;
}

现在,我知道searcher.PropertiesToLoad有一个[memberof][adspath],最后一个给了我用逗号分隔的名字和姓氏,类似CN="gates, billy"但是我不想使用子字符串和索引,列表属性中是否有[firstName][lastName]这样的属性?

我搜索DirectoryEntry有一个名为givenNamesn的属性,但这会返回null

1 个答案:

答案 0 :(得分:0)

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="false" android:drawable="@drawable/switch_off" /> <item android:state_checked="true" android:drawable="@drawable/switch_on" /> </selector> 集正是您需要修改的内容。 Active Directory将仅返回此集合中定义的属性,这就是您没有看到PropertiesToLoadgivenName的原因。只需添加这些属性:

sn

或者,只需添加属性searcher.PropertiesToLoad.Add("givenName"); searcher.PropertiesToLoad.Add("sn"); 即可加载所有属性:

*