我可以在这个用户下运行以下代码,在所有其他情况下都没有问题。出于某种原因,在这种特殊情况下,在将用户添加到组并在查看用户是否已添加之前进行检查时,它会给我这个例外:
调用目标引发了异常。
此错误发生在调用行。
这不应该发生。发送的目录对象是正确的,组存在,我可以从中删除成员就好了,我甚至可以添加成员而不作为测试检查。在我的应用程序的其他区域,此代码使用没有错误。我在许多其他应用程序中使用此代码并且已使用它多年。这里发生了什么?我忘记了什么?
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;
}
答案 0 :(得分:1)
如果它在其他应用程序中有效,那么我猜测它为什么不在这里工作的是运行此代码的用户凭据(换句话说,安全性)的不同之处。
但无论如何,如果可以,我会切换到使用System.DirectoryServices.AccountManagement中的类。他们更友好C#:
PrincipalContext principalContext = new PrincipalContext(ContextType.Domain);
GroupPrincipal group = GroupPrincipal.FindByIdentity(principalContext, "GName");
GroupPrincipal有一个您可以搜索的会员属性。