c++ - Windows多用户登录时如何获取活跃用户?

标签 c++ windows

假设当前有多个用户登录 Windows。比如说,user1 登录,然后 switch useruser2 登录,(没有让 user1 注销)。假设有一个应用程序在用户登录时运行。有两个用户 user1user2 登录,其中 user2 为活跃用户,并且有两个应用。

我的问题是:应用程序如何知道其对应的用户是否活跃?即,user2 域中的应用程序确定其用户处于事件状态,而 user1 域中的应用程序确定其用户当前处于非事件状态。谢谢!

最佳答案

您可以调用WTSGetActiveConsoleSessionId获取当前在物理控制台上事件的终端服务(又名“快速用户切换”又名“远程桌面”) session ID。

您可以调用WTSQuerySessionInformation使用 WTS_CURRENT_SESSION 作为 session 标识符,使用 WTSSessionId 作为 WTSInfoClass 以获取当前进程的终端服务 session ID。

如果active session ID和当前进程session ID相同,则当前进程对应的用户在物理控制台上有active session。

如果您想知道当前进程正在运行的 session 是否处于事件状态(但不一定在物理控制台上),您可以改为使用 WTSConnectState 选项到 WTSQuerySessionInformation

关于c++ - Windows多用户登录时如何获取活跃用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14315013/

相关文章:

windows - 自动网页截图

sql - 是否可以创建一个 sql 脚本来创建数据库并用表填充它?

c++ - 从 std::heap 中间移除一个元素

c++ - 使用 Borland C++ 执行 dos 命令并保存输出

c++ - 使用 GLUT 简单地打印文本

Windows PSQL 命令行 : is there a way to allow for passwordless login?

c++ - 将自定义控件添加到控制台窗口

c++ - 继承,错误前的预期类型说明符

c++ - std::atomic 的默认值是多少?

windows - 如何使用 Phonegap/Cordova/WinJS/HTML/CSS/JS 在 Windows Phone 8.1 中扫描二维码?