尝试从AD中的Computer对象中提取“ManagedBy”属性

时间:2013-09-18 18:43:38

标签: c#

我在这里和那里找到了一些例子,但我似乎无法找到一个解决从计算机记录中检索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";
    }
}

3 个答案:

答案 0 :(得分:0)

你的例子适合我,所以要检查一些事情。

1)lblDomain.Text中的域名是否正确?你能提供一个你正在使用它的例子吗?假名很好。 2)您实际拥有Managed By集的计算机帐户吗?默认为空。

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

答案 1 :(得分:0)

search.Filter = "(&(objectClass=computer)(cn=pcname))";

答案 2 :(得分: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";
  }
}