1

我有一个多域活动目录环境,需要根据 DOMAIN\username 查找用户。

以下代码非常适合按 SID 查找用户。

DirectorySearcher directorySearcher = new DirectorySearcher(new DirectoryEntry(
    "GC://" + Forest.GetCurrentForest().Name));

directorySearcher.Filter =
    "(&" +
        (&(objectCategory=person)(objectClass=user)) +
        "(objectSid=" + this.SID + "))";
var result = directorySearcher.FindOne();

但现在我处于一种情况,我所拥有的只是 DOMAIN\username。

过滤器中有什么?

我考虑的一种方法是连接到特定域而不是全局目录并通过不合格的 SAMAccountName 进行搜索。但我的问题是我不知道如何从 DOMAIN 到 DC=Domain,DC=Org 或 domain.org。

当我在 Active Directory 用户和计算机中时,通过 DOMAIN\username 搜索整个目录似乎没有问题。幕后发生了什么?

4

1 回答 1

2

这是缺失的部分。

using System.Security.Principal;

var sid = (SecurityIdentifier)new NTAccount(userName).Translate(
    typeof(SecurityIdentifier));
于 2014-01-27T20:28:05.540 回答