从Active Directory访问管理器信息

时间:2015-06-22 10:20:56

标签: c# asp.net active-directory

enter image description here

Attach是我从IT部门获得的活动目录的图片。现在我想用C#获取经理信息。

注意:我能够获得用户的所有信息,但没有经理的任何密钥,但IT部门只是给了我上面附带的截图。所以,你能从我能得到的地方取得帮助吗?

enter image description here

这是我从下面提到的代码中得到的信息。

public static UserPrincipal GetUser(string sUserName)
{
   PrincipalContext oPrincipalContext = GetPrincipalContext();

   UserPrincipal oUserPrincipal = 
       UserPrincipal.FindByIdentity(oPrincipalContext, sUserName);
   return oUserPrincipal;
}

2 个答案:

答案 0 :(得分:1)

查看属性编辑器选项卡,它列出了对象的所有属性。

该属性确实存在,并且它被称为manager。

enter image description here

DirectoryEntry userEntry = new DirectoryEntry(“LDAP://developer.hamilton.com/CN=Mike Hamilton,DC=developer,DC=Hamilton,DC=com”, “<adminAccountName>”,”<adminPassword”);

在这里,您可以将adminAccountName和adminPassword替换为实际具有执行绑定权限的任何帐户的实际凭据。

Select remove()

答案 1 :(得分:1)

试试这个:

        var loginName = @"loginNameOfInterestedUser";
        var ldap = new DirectoryEntry("LDAP://domain.something.com");
        var search = new DirectorySearcher(ldap)
        {
            Filter = "(&(objectCategory=person)(objectClass=user)(sAMAccountName=" + loginName + "))"
        };
        var result = search.FindOne();
        if (result == null)
            return;
        var fullQuery = result.Path;
        var user = new DirectoryEntry(fullQuery);
        DirectoryEntry manager;
        if (user.Properties.PropertyNames.OfType<string>().Contains("manager"))
        { 
            var managerPath = user.Properties["manager"].Value;
            manager = new DirectoryEntry("LDAP://" + managerPath);
        }