我现在有这个代码,
string defaultNamingContext;
DirectoryEntry rootDSE = new DirectoryEntry("LDAP://RootDSE");
defaultNamingContext = rootDSE.Properties["defaultNamingContext"].Value.ToString();
rootDSE = new DirectoryEntry("LDAP://" + defaultNamingContext);
//DirectoryEntry domain = new DirectoryEntry((string)"LDAP://" + defaultNamingContext);
DirectorySearcher ouSearch = new DirectorySearcher(rootDSE,"(objectCategory=Organizational-Unit)",
null, SearchScope.Subtree);
MessageBox.Show(rootDSE.Path.ToString());
try
{
SearchResultCollection collectedResult = ouSearch.FindAll();
foreach (SearchResult temp in collectedResult)
{
comboBox1.Items.Add(temp.Properties["name"][0]);
DirectoryEntry ou = temp.GetDirectoryEntry();
}
}当我使用调试器时,我可以看到rootDSE.Path实际上指向了正确的位置,在本例中是DC=g-t-p,DC=Local,但是目录搜索器没有找到任何结果。有人能帮上忙吗?
发布于 2010-05-26 00:00:41
斯蒂芬-我的错-出于某些原因,使用objectCategory的搜索不起作用。
即使objectCategory显示为CN=Organizational-Unit,为了进行搜索,您仍然需要使用与objectClass相同的值:
所以试着使用过滤器(objectCategory=organizationalUnit) --这对我来说绝对有效!
更新:为了在搜索结果中获得一些属性(以便在组合框中显示它们),您需要在创建DirectorySearcher时包括这些属性:
DirectorySearcher ouSearch = new DirectorySearcher(rootDSE);
ouSearch.Filter = "(objectCategory=Organizational-Unit)";
ouSearch.SearchScope = SearchScope.Subtree;
ouSearch.PropertiesToLoad.Add("name");
// add more properties if you want to ...这样,您肯定能够获取temp.Properties["name"][0]并将其放入combobox的项目列表中。
我真的看不出你需要什么
DirectoryEntry ou = temp.GetDirectoryEntry();抓取name属性后.....
https://stackoverflow.com/questions/2906172
复制相似问题