Класс перечисления WTS_CONNECTSTATE_CLASS

Я должен определить, в каком состоянии сеанс пользователя. То есть, если пользователь вошел в систему и активен, или если пользователь не вошел в систему. Для этого я использую функцию 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;

Спасибо

1

Решение

Это не имеет особого смысла. Наиболее вероятным объяснением является то, что currentSession присваивается значение 0, который является идентификатором сеанса для неинтерактивного изолированного сеанса, в котором работают службы.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]