我正在尝试使用System.DirectoryServices .NET Framework class库访问Active Directory Domain Services(adds)。
使用LDAP协议,我想获得具有Office设置值属性的所有DirectoryEntries使用此LDAP Filter (yralthyDeliveryOfficeName =*)同步cookie to文件的未来引用,就像目录sysynchronization中显示的示例msdn示例example
一样这是我的代码:
using (DirectoryEntry de = new DirectoryEntry("LDAP://myDomain.com/OU=Test,DC=myDomain,DC=com"))
{
using (var ds = new DirectorySearcher(de))
{
ds.PropertiesToLoad.Add("distinguishedName");
ds.SearchScope = SearchScope.Subtree;
ds.Filter = "(physicalDeliveryOfficeName=*)";
ds.DirectorySynchronization = new DirectorySynchronization();
SearchResultCollection searchResultCollection = ds.FindAll();
foreach (SearchResult result in searchResultCollection)
{
var dn = (string)result.Properties["distinguishedName"][0];
//do Something
}
var cookie = ds.DirectorySynchronization.GetDirectorySynchronizationCookie();
File.WriteAllBytes(@"location", cookie);
}
}
每次我运行此代码
ds.DirectorySynchronization = new DirectorySynchronization();
我每当我称呼 ds.findall()时会得到一个系统。知道每当我评论相同的代码行时,我都会获得搜索结果,没有任何问题。
我希望我听起来足够清楚。由于某种原因,我发现该字段几乎没有文档。我真的找不到这样的解释。
目录synchronization必须分配给域根LDAP路径,并且不与组织单元等子目录一起工作。
using(DirectoryEntry de = new DirectoryEntry("LDAP://myDomain.com/DC=myDomain,DC=com")){
//same code
}
这将解决问题。
如果任何人都想跟踪诸如OU之类的子目录中的更改,则应使用 usnchanged。