登录用户状态

登录用户状态

问题描述:

我们如何以编程方式访问活动目录中的用户状态?尤其是 状态,如主动/离开/锁定等。这是建立一个网页快照,以查看所有登录的用户及其个人状态。登录用户状态

到目前为止,我可以搜索特定域下的所有用户,但无法找到他们当前的状态。

using (var context = new PrincipalContext(ContextType.Domain, "domain")) 
{ 
    using (var searcher = new PrincipalSearcher(new UserPrincipal(context))) 
    { 
     foreach (var result in searcher.FindAll()) 
     { 
      DirectoryEntry de = result.GetUnderlyingObject() as DirectoryEntry; 
      Console.WriteLine("First Name: " + de.Properties["givenName"].Value); 
      Console.WriteLine("Last Name : " + de.Properties["sn"].Value); 
      Console.WriteLine("User principal name: " + de.Properties["userPrincipalName"].Value); 

     } 
    } 
} 
+0

我在Google上搜索并找到一个体面的链接在http://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C。但是,这并不涉及用户状态。 – Nair

+0

@ rory.ap,我已经包括了我迄今为止所做的。您是否愿意分享您的任何想法 – Nair

“离开”不是你将要离开Active Directory的东西。

可以看看下面的性能得到一些你想要的信息的: userAccountControl是你想看看在主财产。

在您的LDAP查询中使用(userAccountControl:AND:=2)会找到禁用的用户。

其他一些有用的特性是:

  • lastLogon(用于 “活动”,则必须确定哪些积极的手段给你)
  • lockoutTime(lockoutTime> 0)表示他们锁定。
  • accountExpires过期用户
+0

感谢您的支持。如果'离开'不可用,那么我很乐意满足Active。主动是指用户是否登录到当前域/网络中的任何节点。 – Nair

+0

哦,在这种情况下,你没有从AD获得“登录状态”。不容易。我的意思是“活跃”,用户没有被禁用,或被锁定在AD中。 – hometoast

您可以收集安全日志登录\注销用户事件的每个工作站上,域控制器上。通过分析这些信息,您可以确定当前活跃的用户。不幸的是,该解决方案不适用于拥有数千个工作站和数百个DC的企业环境。有时登录\注销事件由于某种原因在安全日志中丢失。

在使用lastLogon \的lastLogonTimestamp的情况下属性注意:

  • lastLogon属性不域控制器之间复制。这是您从中收集信息的域控制器上的最后一次登录用户时间。要确定最后一次用户登录,必须从所有DC中收集属性并选择最大值。
  • lastLogonTimestamp在9-14天内复制一次。 lastLogontimeStamp将在当前日期之后9-14天。
+0

感谢您的分享。我们只在一个DC上查看200台虚拟机。我没有投入使用,因此无法进一步评论。但是,我们正在看一个小规模。 – Nair