如何检查Windows域的用户状态?

我现在有一台运行windows 2000的服务器,很快就会升级到2003。 有没有办法来检查用户状态和电脑状态?

例如,

  • 如果用户闲置
  • 如果PC被locking
  • 用户login多长时间

没关系,如果它不能在Windows 2000中工作,虽然它会很好,如果它。

谢谢你的帮助 :)

没有任何内置function可以在服务器或客户端操作系统中执行任何你所要求的function(而且你也不会在服务器上看到从W2K到W2K3的任何新function)。 你将不得不编码来获得你想要的东西。

就服务器电脑而言,“login”并不意味着你的想法。 客户端计算机上的“交互”login肯定有开始时间和结束时间。 从客户端到远程服务器计算机的“login”将取决于客户端在做什么。 terminal服务从客户端login到服务器是“交互式”,并共享客户端自己的“交互式”会话的属性。

我假设您可能想知道客户端计算机上“交互式”会话的持续时间。 你可以看一下查询Win32_LogonSession的WMI类来获取这些信息。

我想你认为你可以使用服务器计算机上的事件日志来确定客户端计算机何时通过“交互式”login。 你不能。

从客户端计算机进行初始域身份validation或访问服务器计算机上的“映射”“驱动器”是“networking”login,与login和注销相关的时间将与客户端何时开始访问资源以及当客户端(或服务器)closures不活动的连接(或用户的客户端会话的“解除映射”或“交互式”注销)时。

您不应将“域login”或Microsoft文件和打印会话(例如SSH或TELNET会话)视为具有固定的持续时间,该持续时间从用户“login”开始并在用户“注销”时结束。 在正常使用客户端计算机的过程中,可能会出现与服务器计算机的连接。 使用服务器端事件日志来确定客户端计算机上“交互式”会话的持续时间是不好的。

这里有一些示例代码来检测工作站是否被locking: http : //www.codeproject.com/KB/vb/DetectWindowunlock.aspx再次,您可以将它从C#调整为可调用必要API的任何语言。

这听起来像你想知道的其余部分是在屏幕保护状态,主要是。 这篇文章描述了用Win32 API调用检查屏幕保护状态的一篇文章(在这个例子中使用了VB,但是你可以用任何语言来调用这个API): http : //support.microsoft.com/kb/ 315725

如果将“闲置”定义为正在运行的屏保,则可以通过相同的方式获得“闲置”。 如果你对“空闲”有不同的定义,那么你就是自己的 – 操作系统不会帮你。

恐怕我不记得这是否在2000年工作,但文件服务器pipe理MMC应该让你看到一个会话到文件服务器已经打开多久,会话已经空闲多久。 这并不一定反映完整的客户状态。

我不相信你可以找出PC是否被locking从文件服务器。 但是,我相当肯定,客户端上的脚本可以。

我不清楚你的目标是什么(或者你正在解决什么问题),但是如果你有远程桌面软件,比如VNC在客户端上工作,你可以login到控制台上看看发生了什么。 只需要记住,免费版本没有可用的encryption; 这听起来像你想要检查什么客户端机器正在做什么,当你想升级他们。

一种可能的方法是,在服务器上客户端将使用,右键点击我的电脑,并进入pipe理链接,并检查打开的会话和打开文件列表,然后如果你有这些客户端上的VNC连接到IP的,看看这是怎么回事。

或者,您可以使用命令提示符中的“net send”来广播您需要每个人注销系统。