是否可以查询域用户当前登录的域计算机的 IP 地址(或机器名称)列表?
“在 Windows 中使用或不使用域的情况下登录用户名”这个问题很接近,只有我想找到相反的答案。
由于我对 Active Directory 的内部知识缺乏了解,我询问了这种可能性。我的直觉是 Active Directory 只知道域用户最后一次身份验证的时间(以及可能的位置),并且不跟踪当前会话或注销。
提供此解决方案的任何语言都是可接受的答案,但首选 .NET 解决方案。更重要的是,我想知道这是否可能。
是否可以查询域用户当前登录的域计算机的 IP 地址(或机器名称)列表?
“在 Windows 中使用或不使用域的情况下登录用户名”这个问题很接近,只有我想找到相反的答案。
由于我对 Active Directory 的内部知识缺乏了解,我询问了这种可能性。我的直觉是 Active Directory 只知道域用户最后一次身份验证的时间(以及可能的位置),并且不跟踪当前会话或注销。
提供此解决方案的任何语言都是可接受的答案,但首选 .NET 解决方案。更重要的是,我想知道这是否可能。
我不相信有一个地方可以获得这些信息。您可以找出用户上次登录的时间以及从 AD 验证的 DC,但问题是当您登录时第一个响应的 DC 是验证的服务器。然后,该 DC 将此信息记录到其事件日志中,该事件日志驻留在每个主机上,而不是在中央系统中。您可以从这些链接中了解更多信息:http: //support.microsoft.com/kb/175062 和 http://www.tartoos.com/HomePage/Rtable/ComputerSchool/Networking/Net41.htm 话虽如此,我想您可以从用户帐户的 lastLogonTimestamp AD 属性中获取最后一次登录,然后从域中的所有 DC 中查询事件日志,以找出对它们进行身份验证的 DC 以及来自哪个系统。但是所有这一切只会告诉最后一个登录系统......不是他们可以登录的所有系统。再次,您可以将这些结果与可以从 DC 事件日志中提取的注销时间进行比较……但实际上这似乎是一个主要的矫枉过正的努力,并且您最好编写一个记录这些事件的登录/注销脚本到您可以用于将来使用的中央报告系统。
这是另一种选择,您可以查询您的 WINS 服务器以轮询它为用户提供的登录信息,这应该返回它认为他们登录的系统,请参阅这篇文章了解如何执行此操作:
http://www.visualbasicscript.com/m_56230/tm.htm
基本上命令是:"NETSH WINS SERVER \\WinsServerName SHOW NAME UserName 03"
如果您使用某种资产/系统管理软件,例如 Desktop Authority、Altiris 等,那么您可能会更幸运地探索桌面代理记录此信息的位置,因为它们通常也会将此信息记录到某些 SQL 表中。