c# - 什么时候需要域名和域容器来创建 PrincipalContext?

标签 c# .net .net-4.0 active-directory adsi

我正在开发一个 C# .NET Framework 库来访问事件目录。

我必须做的一件事是获取所有 AD 用户,我看到了:

PrincipalContext principalContext =
    new PrincipalContext(ContextType.Domain,
                            domainName.Trim(),
                            domainContainer.Trim());

PrincipalContext principalContext = new PrincipalContext(ContextType.Domain);

使用此代码返回相同的用户:

// define a "query-by-example" principal - here, we search for all users
UserPrincipal qbeUser = new UserPrincipal(principalContext);

// create your principal searcher passing in the QBE principal    
PrincipalSearcher srch = new PrincipalSearcher(qbeUser);

// find all matches
foreach (var found in srch.FindAll())
{
    UserPrincipal user = found as UserPrincipal;
    if (user != null)
    {
        Console.WriteLine(user.SamAccountName);
    }
}

什么时候需要使用域名和域容器?

最佳答案

使用时

var context = new PrincipalContext(ContextType.Domain);

它将连接到当前上下文的域,通常是运行应用程序的用户登录的域,或者如果当前上下文是未连接到域的本地用户,则会抛出异常。

使用时

var context = new PrincipalContext(ContextType.Domain, domainName, domainContainer);

域属性允许您连接到当前上下文之一以外的域,假设当前上下文具有权限或您提供有效凭据。因此,例如在林中有多个域或存在域信任的环境中,您可以指定另一个域来运行查询,而不是用户所属的域。

容器属性将使用该 DomainContext 的所有查询限制到指定的容器。

关于c# - 什么时候需要域名和域容器来创建 PrincipalContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23559710/

相关文章:

c# - 如何创建使用语言服务的 VS2010 扩展

c# - 将匿名类型列表转换为动态对象列表

c# - EF6/SQL Server Compact,基于代码的配置

mysql - 监控MySQL表中的新数据

c# - 使用 TLS 1.2 从 HttpClient 连接到 Azure FrontDoor 后面的 API

c# - Visual Studio C++/CLI 模板神秘错误

wcf - 使用 netTcpBinding 为 WCF 服务启用基于证书的身份验证

c# - 使用 Data Reader 访问两个数据库

c# - 用户 session ID 作为 Ajax 调用中的参数

javascript - 通过单击 WebBrowser Control 中的按钮来调用 C# 函数