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