知道Windows用户是否处于活动状态

时间:2013-02-06 13:19:46

标签: .net windows

在Windows中,我可以登录并切换用户而无需注销。就像我可以让多个用户登录但只有一个工作。我怎么知道哪些用户当前正在工作。

2 个答案:

答案 0 :(得分:2)

实际上我在c#(Detect the Windows session state)中找到了一个非常好的microsoft示例。

他们注册到系统事件“SessionSwitch”

SystemEvents.SessionSwitch += new SessionSwitchEventHandler(SystemEvents_SessionSwitch);

void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e){
...
}

它需要Win32中的依赖

using Microsoft.Win32;

我尝试过,它工作得很好而且相对容易。

答案 1 :(得分:1)

据我所知,.NET框架不会向托管代码公开实现此目的所需的API。您将不得不p /调用相当多的WINAPI函数,并在.NET端定义至少一个结构和一些枚举。

如果您愿意遵循这条道路,您可以:

  • 致电WTSEnumerateSessions(),在WTS_CURRENT_SERVER_HANDLE参数中传递hServer

  • 对已返回的WTS_SESSION_INFO结构进行迭代,找到State成员设置了WTSActiveWTSConnected位的结构(应该只有一个)情况下),

  • 将该结构的SessionId成员传递给WTSQuerySessionInformation(),在WTSUserName参数中指定WTSInfoClass

  • 从返回的缓冲区中读取用户名

  • 使用WTSFreeMemory()释放缓冲区和WTS_SESSION_INFO结构数组。

正如你所看到的,这并非真是微不足道。祝你好运。