Я пишу приложение С# для отображения пользователей в группе безопасности, предоставленной пользователем. Кажется, что все мои тестовые примеры работают, за исключением случаев, когда я ищу «Пользователи домена». Когда я это делаю, ни Surname, ни GivenName не возвращают значения. Все остальные группы возвращают эти значения. Я в тупике.
Тест 1: администраторы домена
Результаты: все фамилия и имя пользователя отображаются в GridView.
Тест 2: Пользователи домена
Результаты: Фамилия или имя не отображаются.
Примечание. Если я изменю свойства на любое другое свойство пользователя AD, например, имя, 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();
}
}
}