AD GroupPrincipal:调用的目标引发了异常

本文关键字:异常 目标 GroupPrincipal 调用 AD | 更新日期: 2023-09-27 18:25:26

我能够以这个用户的身份运行以下代码,在所有其他情况下都没有问题。出于某种原因,在这个特定的情况下,当将用户添加到组中并在查看用户是否已经添加之前进行检查时,它会给我一个例外:

调用的目标引发了异常。

此错误发生在调用行。

这种情况不应该发生。发送的目录对象是正确的,组存在,我可以很好地从中删除成员,我甚至可以在不进行测试的情况下向其中添加成员。在我的应用程序的其他区域,使用此代码时没有出现错误。我在许多其他应用程序中使用此代码,并且已经使用了多年。这是怎么回事?我忘了什么?

private bool userIsMember(string strUser, DirectoryEntry strGroup)
{
    bool result = true;
    try
    {
        object[] args = { strUser };
        object IsMember = strGroup.Invoke("IsMember", args);
        if ((bool)IsMember == true)
        {
            result = true;
        }
        else
        {
            result = false;
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Problem with user: " + strUser + "'r'n'r'n" + ex.Message + "'r'n'r'n" + ex.ToString());
    }
    return result;
}

AD GroupPrincipal:调用的目标引发了异常

如果它在其他应用程序中工作,那么我猜测它为什么在这里不工作是因为运行此代码的用户的凭据不同(换句话说,安全性)。

但是不管怎样,如果可以的话,我会改用System.DirectoryServices.AccountManagement中的类

PrincipalContext principalContext = new PrincipalContext(ContextType.Domain);
GroupPrincipal group = GroupPrincipal.FindByIdentity(principalContext, "GName");

GroupPrincipal有一个Members属性,您可以在其中进行搜索。