我正在编写一个C#应用程序以显示用户提供的安全组中的用户。除了我搜索“域用户”时,似乎所有测试用例都可以正常工作。当我不做时,Surname或GivenName都不会返回值。所有其他组均返回这些值。我很困惑。
测试1:域管理员
结果:GridView中显示所有姓氏和GivenName
测试2:域用户
结果:未显示姓氏或指定名字
注意:如果我将属性更改为其他任何AD用户属性,例如Name,SAM等,则所有这些都将显示而不会出现问题。
namespace adsearch
{
public partial class frmViewGroupMembers : Form
{
private string group;
private DataTable GroupMembers = new DataTable();
public frmViewGroupMembers()
{
InitializeComponent();
}
public void ShowGroupMembers(string groupName) {
GroupMembers.Columns.Add("Last Name");
GroupMembers.Columns.Add("First Name");
using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "mydomain.local")) {
using (GroupPrincipal group = GroupPrincipal.FindByIdentity(context, groupName))
{
foreach (UserPrincipal user in group.GetMembers(true).OfType<UserPrincipal>())
{
GroupMembers.Rows.Add(user.Surname, user.GivenName);
}
}
}
dgvGroupMembers.DataSource = GroupMembers;
dgvGroupMembers.Sort(dgvGroupMembers.Columns[0], ListSortDirection.Ascending);
this.Show();
}
}
}