确定AD中的计算机是否有用户登录

时间:2012-05-29 11:42:15

标签: c# asp.net active-directory directoryservices

我正在尝试接收当前连接到AD的所有计算机以及其中哪些用户已登录到AD。我尝试使用ComputerPrincipal的{​​{1}}属性,但我得到一个完全关闭的值,大约一周。

我想知道AD中哪些电脑可用。我可以使用另一种方法吗?

.LastLogon

编辑:

我希望打印出来像这样:

电脑1:是的 电脑2:错 电脑3:错 电脑4:真的

如果计算机当前已登录,是否无法查询?我只需要一个布尔,无论是对还是错。

2 个答案:

答案 0 :(得分:0)

这是一个经典的MCSE问题。 lastlogon字段是特定DC的本地字段,不是全局复制的。

您需要查询每个AD域控制器并查找每个域控制器的最新日期。

答案 1 :(得分:0)

您需要在林/域中的所有域控制器上查询安全事件日志,以确保用户已在某台计算机上登录。然后,您应该使用WMI联系此工作站以检查用户是否仍然登录。

您感兴趣的事件是Logon events,其中包含交互式登录类型(登录时为ID 4624,注销时为4634)。

但是,当PC丢失与域的连接(对笔记本电脑很常见)和用户注销时,没有域控制器会收到注销事件。

用户可以在没有域的情况下实际登录,以前已经在PC上创建了他的帐户的本地缓存。

正如其他人所说,lastlogon和lastlogontimestamp不能用于跟踪用户登录的可靠方式,请检查thisthis

一些示例here

更多信息herehere