System.DirectoryServices.AccountManagementを使用している組織で電子メールアドレスを持つすべてのユーザーを返す方法を理解しようとしていますが、ドメインを指定する必要はありません。System.DirectoryServices.AccountManagementを使用して組織内のすべてのユーザーを検索する一般的な方法?
これは、組織内のサーバーPCにインストールされるWindowsサービスで使用され、理想的には、各クライアントがインストール時に各自のドメインに入力する必要はありません。
現在、私は次のようにします。
context = New PrincipalContext(ContextType.Domain)
Using userPrin As New UserPrincipal(context)
userPrin.Enabled = True
userPrin.EmailAddress = "*"
Using searcher = New PrincipalSearcher(New UserPrincipal(context))
searcher.QueryFilter = userPrin
Using results As PrincipalSearchResult(Of Principal) = searcher.FindAll
Trace.WriteLine("results.count: " & results.Count)
userPrincipalResult = (From r In results Select TryCast(r, UserPrincipal))
Trace.WriteLine("userPrincipalResult.Count: " & userPrincipalResult.Count)
userList = (From cr In userPrincipalResult Select cr.EmailAddress).ToList()
End Using
End Using
End Using
これに伴う問題は、メインドメインが@client.com
であるが、彼らは同じフォレスト内の別のドメイン@clientdifferent.com
を持っている場合、それはから任意のユーザーを返さないということですこの他のドメイン。
私は、LDAPの代わりにGCを検索してより高いレベルで検索できることを説明した記事を見つけましたが、ドメインとポート番号を追加する必要があります。ドメインを指定しなくても同様のことをする方法はありますか?
リンク:
How to search in multiple domains using System.DirectoryServices.AccountManagement?
When do I need a Domain Name and a Domain Container to create a PrincipalContext?
C# - Searching for users across multiple Active Directory domains