0

我在这里和那里找到了一些示例,但我似乎找不到解决从计算机记录中检索 managedby 属性的示例。(我不知道用户名,但它存储在 managedby 中)

DirectoryEntry searchRoot = new DirectoryEntry("LDAP://"+lblDomain.Text);
DirectorySearcher search = new DirectorySearcher(searchRoot);

search.Filter = ("(objectClass=computer)");
search.PropertiesToLoad.Add("managedBy");
search.PropertiesToLoad.Add("distinguishedName");
search.PropertiesToLoad.Add("cn");

SearchResultCollection groups = search.FindAll();

foreach (SearchResult sr in groups)
{
    if (sr.Properties.Contains("managedby"))
    {
        lblManagedBy.Text=(sr.Properties["managedBy"][0].ToString());
    }
    else
    {
        lblManagedBy.Text = "No owner specified in ManagedBy";
    }
}
4

3 回答 3

0

你的例子对我来说很好,所以有几件事要检查。

1) lblDomain.Text 中的域名是否正确?你能提供一个你正在使用它的例子吗?假名没问题。2) 您实际上是否拥有使用“管理人”集的计算机帐户?默认为空。

除此之外,我使用了您的确切代码并取回了我分配给计算机帐户的用户的 DN,因此这可能与您的连接方式有关。

于 2013-09-18T19:28:00.540 回答
0
search.Filter = "(&(objectClass=computer)(cn=pcname))";
于 2013-09-19T16:14:03.137 回答
0
 DirectoryEntry searchRoot = new DirectoryEntry("LDAP://"+lblDomain.Text);

 DirectorySearcher search = new DirectorySearcher(searchRoot);

 search.Filter = "(&(objectClass=computer)(name=" + host + "))";

 search.PropertiesToLoad.Add("managedBy");
 search.PropertiesToLoad.Add("distinguishedName");
 search.PropertiesToLoad.Add("cn");

 SearchResultCollection groups = search.FindAll();


 foreach (SearchResult sr in groups)
 {
  if (sr.Properties["managedBy"].Count > 0)
  {
      lblManagedBy.Text=(sr.Properties["managedBy"][0].ToString());
  }
  else
  {
     lblManagedBy.Text = "No owner specified in ManagedBy";
  }
}
于 2018-10-22T12:25:03.457 回答