如何在活动目录中的“成员”选项卡中获取组

本文关键字:成员 选项 获取 活动 | 更新日期: 2023-09-27 18:04:16

我的第一个项目是为我们的Active Directory创建一个Web工具。我需要做的一件事是获取并显示 Active Directory 中用户帐户的"成员"选项卡中显示的组,并将其传递给网格视图。我已经做了一些功课,这是我所拥有的。

我有一个文本框(txt用户名(,旁边是一个按钮("此用户的搜索组"(。

这是我的代码:

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;
}

我仍然无法在"成员"选项卡中获取组。

如何在活动目录中的“成员”选项卡中获取组

尝试使用 .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作为用户所属的组返回 - 间接(。