我有一个代表用户的DirectoryEntry对象。从DirectoryEntry.Properties集合中,我正在检索"manager"属性,该属性将为用户的经理提供一个专有名称(“DN”)值。

我可以仅从这两个对象中检索管理器的DirectoryEntry对象吗?如果是这样,怎么办?

我正在设想类似DirectoryEntry.GetEntryFromDN(dnManager);的东西,但是我找不到类似的电话。

需要澄清的是,DirectoryEntry和DN是我仅有的信息。我无法实例化新的DirectoryEntry,因为那样我将不得不使用默认目录和凭据,或者必须具有目录名称/端口和用户名/密码。

最佳答案

DirectoryEntry User = YourPreExistingUser();

string managerDN = User.Properties["manager"][0].ToString();

// Browse up the object hierarchy using DirectoryEntry.Parent looking for the
// domain root (domainDNS) object starting from the existing user.
DirectoryEntry DomainRoot = User;

do
{
    DomainRoot = DomainRoot.Parent;
}
while (DomainRoot.SchemaClassName != "domainDNS");

// Use the domain root object we found as the search root for a DirectorySearcher
// and search for the manager's distinguished name.
using (DirectorySearcher Search = new DirectorySearcher())
{
    Search.SearchRoot = DomainRoot;

    Search.Filter = "(&(distinguishedName=" + managerDN + "))";

    SearchResult Result = Search.FindOne();

    if (Result != null)
    {
        DirectoryEntry Manager = Result.GetDirectoryEntry();
    }
}

关于c# - 如何从DirectoryEntry和DN检索DirectoryEntry,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5572776/

10-09 21:18