Я должен определить, в каком состоянии сеанс пользователя. То есть, если пользователь вошел в систему и активен, или если пользователь не вошел в систему. Для этого я использую функцию WTSEnumerateSessions
а потом я проверяю WTS_SESSION_INFO
который является возвращением из этой функции, которая имеет член государства.
Согласно онлайн-документации.
WTSActive Пользователь вошел в WinStation
WTSDisconnected
WinStation активна, но клиент отключен.
Проблема в том, что я в настоящее время вошел в мою систему, но состояние, возвращаемое для моего текущего сеанса WTSDisconnected
я ожидаю, что состояние будет WTSActive
есть ли причина того, почему это происходит?
Код ниже
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;
Спасибо
Это не имеет особого смысла. Наиболее вероятным объяснением является то, что currentSession
присваивается значение 0
, который является идентификатором сеанса для неинтерактивного изолированного сеанса, в котором работают службы.
Других решений пока нет …