在 Windows 中,我可以在不注销的情况下登录和切换用户。像这样我可以让多个用户登录但只有一个工作。我如何知道哪些用户当前正在工作。
问问题
246 次
2 回答
2
实际上,我在 c# 中找到了一个非常好的 microsoft 示例(检测 Windows 会话状态)。
他们注册到系统事件“SessionSwitch”
SystemEvents.SessionSwitch += new SessionSwitchEventHandler(SystemEvents_SessionSwitch);
void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e){
...
}
它需要 Win32 中的依赖项
using Microsoft.Win32;
我试过了,效果很好,而且相对容易。
于 2013-02-07T09:59:29.443 回答
1
据我所知,.NET 框架不会向托管代码公开实现此目的所需的 API。您将不得不 p/invoke 相当多的 WINAPI 函数并在 .NET 端定义至少一个结构和一些枚举。
如果你愿意走这条路,你可以:
调用WTSEnumerateSessions(),传入参数
WTS_CURRENT_SERVER_HANDLE
,hServer
遍历返回的WTS_SESSION_INFO结构并找到其
State
成员设置了WTSActive
andWTSConnected
位的结构(在您的情况下应该只有一个),SessionId
将该结构的成员传递给WTSQuerySessionInformation()WTSUserName
,在WTSInfoClass
参数中指定,从返回的缓冲区中读取用户名,
使用WTSFreeMemory()释放缓冲区和
WTS_SESSION_INFO
结构数组。
如您所见,这并非微不足道。祝你好运。
于 2013-02-06T14:03:08.963 回答