Hello Everyone我正在尝试开发一个程序,它将列出所有Active Directory用户,当我选择一个用户时,程序应该能够显示与该用户关联的计算机。即该AD用户可访问的计算机。 我编写了代码列出所有用户,但不知道如何列出与该用户关联的计算机。 以下是将AD用户加载到数据表中的代码:
DataTable dtUser= new DataTable();
try
{
DirectoryEntry dom = Domain.GetComputerDomain().GetDirectoryEntry();
DirectorySearcher dsAllUsers = new DirectorySearcher(dom);
dsAllUsers.SearchScope = SearchScope.Subtree;
dsAllUsers.Filter = "(objectCategory=Person)";
SearchResultCollection result = dsAllUsers.FindAll();
dtUser.Columns.Add("CustodianName");
dtUser.Columns.Add("Email");
dtUser.Columns.Add("Title");
dtUser.Columns.Add("Dept.");
foreach (SearchResult rs in result)
{
DataRow newRow = dtUser.NewRow();
if (rs.GetDirectoryEntry().Properties["samaccountname"].Value != null)
newRow["CustodianName"] = rs.GetDirectoryEntry().Properties["samaccountname"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["mail"].Value != null)
newRow["Email"] = rs.GetDirectoryEntry().Properties["mail"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["title"].Value != null)
newRow["Title"] = rs.GetDirectoryEntry().Properties["title"].Value.ToString();
if (rs.GetDirectoryEntry().Properties["department"].Value != null)
newRow["Dept."] = rs.GetDirectoryEntry().Properties["department"].Value.ToString();
dtUser.Rows.Add(newRow);
}
return dtUser;
}
catch (Exception)
{
throw;
}
答案 0 :(得分:0)
我不相信标准的LDAP / Active Directory有这样的东西。
计算机只是另一类AD对象 - 但是没有"链接"在用户和一台(或多台)计算机之间 - belongsTo
类没有computer
属性,computers
上也没有User
集合}。
如果您的组织已实施默认AD架构的扩展(这完全可能!),那么它是一个自定义解决方案,然后您必须知道它是什么! : - )