0

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 のグループなのですか?

4

0 に答える 0