我必须确定用户会话处于什么状态。即,如果用户已登录并处于活动状态,或者用户未登录。要使用函数WTSEnumerateSessions
执行此操作,然后我将检查从此函数返回的WTS_SESSION_INFO
,该函数具有状态成员。
根据在线文档。
WTSActive用户登录到WinStation
WTSDisconnected WinStation处于活动状态,但客户端已断开连接。
问题是我当前登录到我的系统但是我当前会话返回的状态是WTSDisconnected
我期待状态为WTSActive
是否有任何理由说明为什么会这样?< / p>
以下代码
PWTS_SESSION_INFO pSessionInfo(nullptr);
DWORD countOfSessions(0);
DWORD sessionIndex(0);
if (WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, // local machine
0, // reserved, must be zero
1, // Version, must be one
&pSessionInfo,
&countOfSessions) == FALSE)
{
return false;
}
if (countOfSessions == 0 || !pSessionInfo)
{
return false;
}
const DWORD currentSession = GetRealSessionID(CurrentSession); //This case we are in session 0
for (; sessionIndex < countOfSessions; ++sessionIndex)
{
WTS_SESSION_INFO& sessionInfo = pSessionInfo[sessionIndex];
if (currentSession == sessionInfo.SessionId)
{
if (sessionInfo.State == WTSActive)
{
return true;
}
}
}
return false;
由于
答案 0 :(得分:0)
这没有多大意义。最可能的解释是currentSession
被赋值为0
,这是服务运行的非交互式隔离会话的会话ID。