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;

只返回 20 个组而不是 22 个,而我之后的组(新)是第 21 组或第 22 组,因此循环在到达组之前已经退出。为什么组枚举不完整?应该是 22 组,为什么要 20 组?

4

0 回答 0