我想通过使用PrincipalContext的Active Directory服务找出域组件。从PrincipalContext查找域组件
我用很少的参数创建的PrincipalContext:
PrincipalContext theContext = new PrincipalContext(ContextType.Domain);
theContext正确回来。我可以查询很多事情并获得预期的结果。但我真的很想做的是等价的:
Console.WriteLine("Domain Component: " + theContext.Container);
根据MSDN,这只是“获取在构造函数的容器参数指定的值。”由于我什么都没有通过,我没有得到任何回报。
但是,理论容器具有域组件,这些组件是您可能需要使用或创建的任何可分辨名称所需的。我特别希望在我认识的组织单位中创建新用户。但是,由于我不知道域组件,因此我无法创建专有名称。我还没有看到任何支持相对路径。
我想到的最佳选择是搜索任何用户,然后获取其专有名称并切掉“dc”部分。
var searchUser = new UserPrincipal(theContext);
var searcher = new PrincipalSearcher(searchUser);
Principal aUser = searcher.FindOne();
if (aUser != null)
{
string dn = aUser.DistinguishedName;
Console.WriteLine(dn.Substring(dn.IndexOf("dc=", StringComparison.InvariantCultureIgnoreCase)));
}
这感觉就像一个可怜的黑客;太多可能会出错。我希望有更好的东西。有人有想法吗?
这确实是得到它。谢谢。 – 2011-01-31 18:20:42