查询Windows框以查看当前login的用户是否空闲 – 理想情况下使用WMI

我希望能够查询当前login的用户是否在他们的个人电脑闲置 – 即他们的个人电脑认为他们是“不活跃”…问题是有这么多的方式可以做到这一点。 有没有一个普遍的:“这台计算机是空闲/非活动” – 我正在考虑使用任何措施电源子系统使用…

我的想法是使用WMI / Powershell,但我也可以在C#中使用.NET调用 – 我只是不想!

对不起,对此有点模糊,我更乐意让任何人把我的问题编辑成更有意义的东西!

麦克风

如果你愿意破解它,并寻找一个屏幕保护程序来消除不活动,你可以使用powershell来查看会话是否处于非活动状态(即计算机被locking):

QUERY SESSION /server:MachineName UserName 

它使用terminal服务接口来查看用户是否连接到会话。 这是有效的,因为在现代版本的Windows中,所有本地用户被视为计算机的控制台会话。 感兴趣的两个地位是:

  • 活动 :login并使用
  • 断开连接 :login但屏幕locking或用户分离

因为它基于旧的qwinstafunction,而不是完全的OO,所以如果你想要一个布尔值(例如-contains“Active”),你需要做一些string操作。

对于一个准确的数字(以及屏幕保护程序本身一般是由什么驱动的),请查看LastInputInfo() win32 API调用,但是如果需要远程监视,则需要在用户的上下文中执行该操作。 以下是MSDN文章: http : //msdn.microsoft.com/en-us/library/ms646302(VS.85).aspx

不是简单的答案。

我曾经使用WMI列出正在运行的进程并寻找屏幕保护程序。 如果屏幕保护程序正在运行,则它们在某种意义上处于非活动状态,尽pipe您仍然无法确定它们是否已经运行了应用程序。 你可以检查CPU和/或磁盘动作等事情,但很难从这些问题得到确切的答案。

JR