登录用户状态
问题描述:
我们如何以编程方式访问活动目录中的用户状态?尤其是 状态,如主动/离开/锁定等。这是建立一个网页快照,以查看所有登录的用户及其个人状态。登录用户状态
到目前为止,我可以搜索特定域下的所有用户,但无法找到他们当前的状态。
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);
}
}
}
答
“离开”不是你将要离开Active Directory的东西。
您可以看看下面的性能得到一些你想要的信息的: userAccountControl是你想看看在主财产。
在您的LDAP查询中使用(userAccountControl:AND:=2)
会找到禁用的用户。
其他一些有用的特性是:
- lastLogon(用于 “活动”,则必须确定哪些积极的手段给你)
- lockoutTime(lockoutTime> 0)表示他们锁定。
- accountExpires过期用户
答
您可以收集安全日志登录\注销用户事件的每个工作站上,域控制器上。通过分析这些信息,您可以确定当前活跃的用户。不幸的是,该解决方案不适用于拥有数千个工作站和数百个DC的企业环境。有时登录\注销事件由于某种原因在安全日志中丢失。
在使用lastLogon \的lastLogonTimestamp的情况下属性注意:
- lastLogon属性不域控制器之间复制。这是您从中收集信息的域控制器上的最后一次登录用户时间。要确定最后一次用户登录,必须从所有DC中收集属性并选择最大值。
- lastLogonTimestamp在9-14天内复制一次。 lastLogontimeStamp将在当前日期之后9-14天。
+0
感谢您的分享。我们只在一个DC上查看200台虚拟机。我没有投入使用,因此无法进一步评论。但是,我们正在看一个小规模。 – Nair
我在Google上搜索并找到一个体面的链接在http://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C。但是,这并不涉及用户状态。 – Nair
@ rory.ap,我已经包括了我迄今为止所做的。您是否愿意分享您的任何想法 – Nair