ADユーザーが特定のグループのメンバーであるかどうかを判断する、実証済みの機能があります。何年も問題なく使用しています。今まで。C# .net を使用して新しいアプリを開発しており、アクセスを制御する新しい AD グループを作成しました。私のアカウントは問題のグループのメンバーなので、この検証に合格するはずですが、合格しません。コードは次のとおりです。
public bool isGroupMember(strUserID)
{
bool b = false;
DirectoryEntry root = new DirectoryEntry("LDAP://DC=domain,DC=com", strADUserID, strADPassword);
DirectorySearcher search = new DirectorySearcher(root);
search.Filter = "samAccountName=" + strUserID;
SearchResult result = search.FindOne();
short groups = result.Properties("memberOf").Count() - 1;
string Group = null;
short i = 0;
while (!(b == true | i == groups)) {
Group = result.Properties("memberOf")(i).ToString;
if (Group == "CN=MyGroup,OU=GroupOU,DC=domain,DC=com") {
b = true;
}
i = i + 1;
}
return b;
}
問題は、私のアカウントが 22 のグループのメンバーであるにもかかわらず、回線が
short groups = result.Properties("memberOf").Count() - 1;
は 22 ではなく 20 グループのみを返し、私が求めている (新しい) グループはグループ 21 または 22 のいずれかであるため、ループはグループに到達する前に既に終了しています。グループの列挙が完了していないのはなぜですか? 22 のはずなのに、なぜ 20 のグループなのですか?