1

マルチドメイン Active Directory 環境があり、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 しかない状況に陥っています。

このためのフィルターには何が入りますか?

私が検討した 1 つのアプローチは、グローバル カタログではなく特定のドメインに接続し、修飾されていない 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 に答える