在C#中发生Active Directory中的事件时通知我

时间:2016-09-01 01:09:19

标签: c# .net active-directory ldap active-directory-group

我需要在使用LDAP协议在Active Directory中发生某些事件时收到通知。应触发的事件是:

  • 当某个AD组与用户关联时。
  • 如果AD用户中的字段(如电话号码)已更改。

我搜索了所有互联网,但大多数解决方案都是基于本文末尾的代码:

如该文章所述,有3种方法可以做到:

  • 使用USNChanged
  • 使用DirSync控件
  • 并在页面末尾使用该代码。

对于前两个选项,我在Microsoft网站上找到了带有示例的文章,但所有示例都是用c ++编写的,我需要在C#中使用它。

我发现的其他代码示例不完整且不易理解,因此我无法使用它们。

是否有任何解决方案,代码示例等我可以使用类似于提供的文章末尾的代码?

再次,我需要在C#

中使用它

由于

1 个答案:

答案 0 :(得分:0)

我想分享到目前为止我所取得的成就。因此,我设法使用提供的文章中的第3个解决方案在我的Active目录上设置通知程序:

我意识到(即使它在帖子中提到)它可能只在域中注册5个对象 - 我不完全确定原因,但是服务器有一些限制。我用下一行代码解决了这个问题:

notifier.Register("dc=a24xrmdomain,dc=info",System.DirectoryServices.Protocols.SearchScope.Subtree);

即我设置了要观察的根域,并将监控范围设置为System.DirectoryServices.Protocols.SearchScope.Subtree) - 所有孩子的。

我发现以这种方式监视Active目录并不是最佳做法,因为如果有很多用户 - 例如10k,则不会触发所有更改。因此,由于您必须具有要监视的先前对象状态,因此可以使用提供的链接中的其他两种方法来完成此任务。我假设您必须为每5秒设置一些计时器,并检查对象的相应字段。