我正在开发一个C# .NET框架库来访问活动目录。
我必须做的一件事就是让所有的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);
}
}何时需要使用域名和域容器?
发布于 2014-05-09 09:25:55
在使用时
var context = new PrincipalContext(ContextType.Domain);它将连接到当前上下文的域,通常是运行应用程序的用户登录到的域,或者如果当前上下文是未连接到域的本地用户,则会引发异常。
在使用时
var context = new PrincipalContext(ContextType.Domain, domainName, domainContainer);域属性允许您连接到当前上下文以外的域,假设当前上下文具有权限或提供有效凭据。因此,例如,在林中有多个域或域信任的环境中,可以指定要运行查询的另一个域,而不是用户所属的域。
容器属性将使用该DomainContext的所有查询限制为指定的容器。
发布于 2014-05-09 08:48:45
上下文用于以这种方式创建目录条目:
new DirectoryEntry("LDAP://domain_name/container")或者当没有容器时:
new DirectoryEntry("LDAP://domain_name/rootDse")您可以省略域名,但我建议始终包括它,因为我有问题,它在过去(一些随机抛出的例外)。
当您想将搜索限制到特定的OU时,应该包含容器。
https://stackoverflow.com/questions/23559710
复制相似问题