在Windows中,我可以登录并切换用户而无需注销。就像我可以让多个用户登录但只有一个工作。我怎么知道哪些用户当前正在工作。
答案 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
成员设置了WTSActive
和WTSConnected
位的结构(应该只有一个)情况下),
将该结构的SessionId
成员传递给WTSQuerySessionInformation(),在WTSUserName
参数中指定WTSInfoClass
,
从返回的缓冲区中读取用户名
使用WTSFreeMemory()释放缓冲区和WTS_SESSION_INFO
结构数组。
正如你所看到的,这并非真是微不足道。祝你好运。