我的第一个项目是为我们的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”标签中找到这些组。
答案 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}}作为用户所属的组返回 - 间接)。