如何检查系统是否处于注销状态?

3

我想在VC++中检查系统是否处于注销状态,有什么想法吗?

2个回答

4
  • 您可以使用各种机制(SENS、SCM通知(如果您的程序是服务)、Winlogon通知(如果您在XP上))获取登录/注销通知。
  • 您可以使用WMI枚举活动会话。
  • 您可以使用WTS API枚举会话并查询会话信息。

我需要讨论你提到的WMI枚举活动会话的要点。我如何使用它来判断机器是否处于注销状态。我正在使用以下WMI查询来获取会话。SELECT * FROM Win32_LogonSession它返回给我7个会话,但只有一个用户登录。另外,LsaEnumerateLogonSessions()函数也可以实现相同的功能。 - Abdul Khaliq
一些关于会话的LogonType属性的试错应该可以解决这个问题。 - On Freund

3

在AutoIt中,我通常通过检查活动窗口句柄来检测系统是否已注销,如果系统已注销,则活动窗口句柄将返回0x0000000。在AutoIt中,它看起来应该是这样的...

If WinGetHandle("") == 0x00000000 Then MsgBox(0,"","We are logged out!")

希望这能帮到你...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接