如何在Active Directory的“成员”选项卡中获取组

时间:2013-03-15 09:40:00

标签: c# asp.net active-directory

我的第一个项目是为我们的Active Directory创建一个Web工具。我需要做的一件事是获取并显示Active Directory中用户帐户的“MemberOf”选项卡中显示的组,并将其传递给gridview。我做了一些家庭作业,这就是我所拥有的。

我有一个文本框(txtusername),旁边是一个按钮(“此用户的搜索组”)。

这是我的代码:

protected void btnsearch_Click(object sender, EventArgs e)
{
    ADMAM.GetUserGroups(txtusername.Text, Session["WindowsID"].ToString(), Session["Password"].ToString());
}

public DataTable GetUserGroups(string sUserName, string windowsid, string password)
{
    DataTable dt = new DataTable();
    UserPrincipal oUserPrincipal = GetUser(sUserName, windowsid, password);

    PrincipalSearchResult<Principal> oPrincipalSearchResult = oUserPrincipal.GetGroups();

    foreach (Principal oResult in oPrincipalSearchResult)
    {
        dt.Rows.Add(oResult.Name);
        dt.AcceptChanges();
    }

    return dt;
}

我仍然无法在“MemberOf”标签中找到这些组。

1 个答案:

答案 0 :(得分:0)

尝试使用.GetAuthorizationGroups电话:

PrincipalSearchResult<Principal> oPrincipalSearchResult = oUserPrincipal.GetAuthorizationGroups();

foreach (Principal oResult in oPrincipalSearchResult)
{
    dt.Rows.Add(oResult.Name);
    dt.AcceptChanges();
}

这具有额外的好处,它将递归搜索用户的组成员资格(如果用户是Group A的成员,而Group B成为.GetAuthorizationGroups()的成员,则Group B将还将{{1}}作为用户所属的组返回 - 间接)。