使用DirectoryNotificationControl的异步搜索请求将不会检索已删除的对象

时间:2014-03-11 16:47:30

标签: c# active-directory ldap

我正在使用此搜索:

        SearchRequest request = new SearchRequest("CN=Users,DC=xx,DC=xxx", "(objectclass=*)",  SearchScope.OneLevel, new string[] {"isDeleted", "objectGUID", "uSNChanged"});
        request.Controls.Add(new DirectoryNotificationControl());        

        IAsyncResult result = Connection.BeginSendRequest(
            request,
            PartialResultProcessing.ReturnPartialResultsAndNotifyCallback, 
            RunAsyncSearch, // Callback that processes responses
            null
            );

并且在用户被删除时不会通知。我也尝试添加

request.Controls.Add(new ShowDeletedControl());

但它没有帮助。我在

中检查了tombstoneLifeTime(设置为180)
CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=xxx,DC=xxx

奇怪的是,this tutorial的搜索只返回了一个结果:

ldap_search_ext_s(ld, "<WKGUID=18E2EA80684F11D2B9AA00C04F79F805,DC=xxx,DC=xxx>", 2, "(objectclass=*)"), attrList,  0, svrCtrls, ClntCtrls, 6000, 10000 ,&msg) Getting 1 entries: Dn: CN=Deleted Objects,DC=xxx,DC=xxx

(18E2EA80684F11D2B9AA00C04F79F805是CN =已删除对象的众所周知的AD对象GUID)

1 个答案:

答案 0 :(得分:0)

我从上面的示例中提供了LdapConnection,其中包含用户的凭据,是管理员组的成员,服务器上安装了所需的域控制器,但这还不够。代码必须在提升的权限下运行,因此运行Visual Studio或代码&#34;作为管理员&#34;固定我的意见。我还能够通过运行具有提升权限的ldp.exe来查看已删除的对象。