【问题标题】:Access manager information from Active Directory从 Active Directory 访问管理器信息
【发布时间】:2015-06-22 20:31:06
【问题描述】:

附件是我从 IT 部门获得的 Active Directory 的图片。现在我想在 C# 中获取经理信息。

注意:我可以获取用户的所有信息,但没有任何经理的密钥,但 IT 部门刚刚给了我上面的截图。那你能帮我从哪里得到吗?

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

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

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

【问题讨论】:

    标签: c# asp.net active-directory


    【解决方案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);
            }
    

    【讨论】:

    • 经理没有任何价值,我已经更新了问题,请看一下。
    • @AwnAli oUserPrincipal 有什么类型?不是DirectoryEntry,这就是它没有manager 属性的原因。试试我的解决方案
    • 您的代码有效,但它给了我 managerPath = "CN=manager name,OU=bac,DC=company,DC=com" 这是正确的。但以下行有异常: manager = new DirectoryEntry(managerPath);
    • 为 adsObject 提供的值没有实现 IAD。这是我在这条线路上遇到的例外 manager = new DirectoryEntry(managerPath);
    • manager = GetUser(managerPath.ToString()).GetUnderlyingObject() as DirectoryEntry;上面的代码行工作正常,但它太慢了,我怎么能让它变快。
    【解决方案2】:

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

    该属性确实存在,它被称为管理器。


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

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

    http://geekswithblogs.net/mhamilton/archive/2005/10/04/55920.aspx

    【讨论】:

    • 经理没有任何价值,我已经更新了问题,请看一下。
    • 我设法得到了上面的经理字符串,即“CN=经理名称,OU=bac,DC=company,DC=com”你能告诉我如何获取经理的 DirectoryEntry 对象上面的字符串?目前我是这样的: manager = GetUser(managerPath.ToString()).GetUnderlyingObject() as DirectoryEntry;但它太慢了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多