![查询 Windows 框以查看当前登录的用户是否处于空闲状态 - 最好使用 WMI](https://linux22.com/image/487280/%E6%9F%A5%E8%AF%A2%20Windows%20%E6%A1%86%E4%BB%A5%E6%9F%A5%E7%9C%8B%E5%BD%93%E5%89%8D%E7%99%BB%E5%BD%95%E7%9A%84%E7%94%A8%E6%88%B7%E6%98%AF%E5%90%A6%E5%A4%84%E4%BA%8E%E7%A9%BA%E9%97%B2%E7%8A%B6%E6%80%81%20-%20%E6%9C%80%E5%A5%BD%E4%BD%BF%E7%94%A8%20WMI.png)
我希望能够查询当前登录的用户是否在其 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