ここでは全く異なる解決策があります。私のドメインをテストして作業しています。いくつかの注意事項:あなたは正しいDirectorySearcher.Filterを取得する必要があります。 AD階層に複数のOUを追加します(逆順、ボトムアップ)。また、安全であるように、私はSystem.ComponentModel.Componentを実装しているので、 "using"ステートメントにいくつかのオブジェクトを置いています。これはIDisposable ...を実装しています。誰がここで、クエリのこのタイプの検索からここに来るために
public bool IsUserMemberOfGroup(string groupName)
{
// CN is your distro group name. OU is the object(s) in your AD hierarchy. DC is for your domain and domain suffix (e.g., yourDomain.local)
string searchFilter = String.Format(@"(&(objectcategory=user)(sAMAccountName=markp)(memberof=CN={0},OU=System Admins,OU=USA,DC=yourDomain,DC=local))", groupName);
SearchResultCollection searchResult;
using (var dirEntry = new DirectoryEntry("LDAP://dc=yourDomain,dc=local"))
{
using (var dirSearch = new DirectorySearcher(dirEntry))
{
dirSearch.SearchScope = SearchScope.Subtree;
dirSearch.Filter = searchFilter;
searchResult = dirSearch.FindAll();
}
}
if (searchResult.Count <= 0 || searchResult == null) {
return false; // not in group
}
else {
return true; // in group
}
}
この技術は動作しますが、配布リストは含まれず、セキュリティグループのみが含まれます。誰かが配布リストを取得する方法を知っていれば、それは素晴らしいでしょう。 –
実際、私はグループの列挙を探しています。 – MarkP
配布グループを含むグループ列挙? –