查询 Windows 框以查看当前登录的用户是否处于空闲状态 - 最好使用 WMI

查询 Windows 框以查看当前登录的用户是否处于空闲状态 - 最好使用 WMI

我希望能够查询当前登录的用户是否在其 PC 上处于空闲状态 - 即他们的 PC 认为他们处于“非活动”状态...问题是有很多方法可以做到这一点。是否有通用的:“这台计算机处于空闲/非活动状态” - 我正在考虑使用电源子系统使用的任何测量方法...

我的想法是使用 WMI/Powershell,但我也可以在 C# 中使用 .NET 调用 - 但我宁愿不这样做!

抱歉,我在这个问题上有点含糊,我非常高兴有人能将我的问题修改成更有意义的内容!

麦克风

答案1

如果您愿意破解它并寻找屏幕保护程序来确定不活动状态,您也可以使用 powershell 来查看会话是否处于不活动状态(即计算机是否被锁定):

QUERY SESSION /server:MachineName UserName

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

  • 积极的:已登录并使用
  • 断开连接:已登录但屏幕被锁定或用户已断开连接

因为它基于旧的 qwinsta 功能而不是完全的 OO,所以如果您想要从中获得布尔值(即 -contains“Active”),您需要进行一些字符串操作。

要获得准确的数字(以及屏幕保护程序本身通常由什么驱动),请查看最后输入信息()win32 API 调用,但您需要在用户上下文中运行它,如果您需要远程监控,这通常是一个问题。不过这是 MSDN 文章:http://msdn.microsoft.com/en-us/library/ms646302(VS.85).aspx

答案2

答案很简单:不是。

我过去曾使用 WMI 列出正在运行的进程并查找屏幕保护程序。如果屏幕保护程序正在运行,从某种意义上说它们处于非活动状态,但您仍然无法判断它们是否让应用程序运行。您可以检查 CPU 和/或磁盘活动等内容,但很难从中得到确切的答案。

JR

相关内容