在c#中捕获ActiveDirectory“addUser”事件?

时间:2011-11-03 10:01:41

标签: c# sql-server active-directory

我们的系统具有“AutoLogin”功能。

因此,如果我在AD中创建一个新用户为“John” - 那么John就能够访问Intranet网站(我们查询AD以查看当前用户是否在AD中)。

但是

我们还有一个users表(SQL Server),需要拥有新用户的FirstNameLastName

我们希望每次在AD中创建新用户时更新Users表 - 应运行一些C#代码以将相关数据输入SQL Server(以及其他一些内容)。

请问我能否抓住“创建AD的新用户”事件?

3 个答案:

答案 0 :(得分:4)

查看Ryan Dunn的优秀博客文章:

Implementing Change Notifications in .NET

处理这个确切的主题。他提供三种选择:

  • 使用uSNChanged轮询更改
  • 使用DirSync控件轮询更改
  • 更改Active Directory中的通知

并显示每个选项的优缺点,以及第三个选项的一些C#代码(更改通知)。

答案 1 :(得分:2)

您可以使用来自C#的System.DirectoryServices.Protocols。DirectoryNotificationControl来实现此目的,这样您就不必轮询AD以进行更改。

WMI可能是您可以深入研究的第二种解决方案。它存在AD WMI提供商。 Using WMI to Monitor AD为您提供了一些线索。到目前为止,本文所做的工作并不多,但我认为通过WMI事件,您可以创建所需的通知。您可以在Monitoring Active Directory Healthespecialy Active Directory WMI Providers中找到有关此信息的Microsoft信息。

答案 2 :(得分:0)

如果不包含将新用户添加到某种c#例程中的实际功能,则不太可能捕获此类事件。如果沿着这条路线前进,可以同时将用于AD和mysql的用途添加。

另一种选择是轮询AD用户并针对现有的mysql用户进行检查,并在找到时添加新用户。