【问题标题】:How to list users in all domains running code from a non-domain computer?如何列出从非域计算机运行代码的所有域中的用户?
【发布时间】:2014-12-29 19:04:21
【问题描述】:

我有 2 个域之间存在信任关系。由于配置的信任,我在其中一个域中有一个 Active Directory 帐户,该帐户在另一个域中也具有权限。在我的应用程序中,我需要访问这两个域并列出其中的用户。

我的开发计算机不在上述域中,我无法将其添加到这些域中。 目前我正在使用以下代码列出创建我的帐户的域中的用户:

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "192.168.2.11", “Login1”, “pass1”))
{
    using (UserPrincipal searchPrincipal = new UserPrincipal(pc))
    {
         searchPrincipal.Name = "*";
         using (PrincipalSearcher searcher = new PrincipalSearcher(searchPrincipal))
         {

                using (PrincipalSearchResult<Principal> principals = searcher.FindAll())
                {
                     foreach (UserPrincipal principal in principals)
                      {
                          Console.WriteLine(principal.Name);
                      }
                }
         }
    }
}

如果我在不在其中一个域中的计算机上运行代码,如何调整我的代码以列出来自两个域的用户?

【问题讨论】:

    标签: c# authentication active-directory windows-authentication directoryservices


    【解决方案1】:

    你有几个选择。

    1. 如果两个域都在同一个林中,您只需将域 IP 更改为全局目录 IP 即可查询全局目录。

    C# - Searching for users across multiple Active Directory domains

    1. 继续您的硬编码方法,您可以创建一个域 IP 数组。遍历数组并为数组中的每一个调用您的代码。

    字符串[] 域 = 新字符串[] {"192.168.2.11","192.168.2.12"};

            for(int i = 0; i < domains.Length; i++)
            {
                using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, domains[i], “Login1”, “pass1”))
                {
                    using (UserPrincipal searchPrincipal = new UserPrincipal(pc))
                    {
                         searchPrincipal.Name = "*";
                         using (PrincipalSearcher searcher = new PrincipalSearcher(searchPrincipal))
                         {
    
                                using (PrincipalSearchResult<Principal> principals = searcher.FindAll())
                                {
                                     foreach (UserPrincipal principal in principals)
                                      {
                                          Console.WriteLine(principal.Name);
                                      }
                                }
                         }
                    }
                }
            }
    

    【讨论】:

    • 感谢您提供有用的链接。我意识到我需要以某种方式发现域,而不是列出每个域中的用户(所需的用户信息存储在域级别而不是全局目录中),我问了另一个问题:stackoverflow.com/questions/27908447/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 2019-02-15
    • 2015-06-07
    • 1970-01-01
    • 2014-08-08
    相关资源
    最近更新 更多