WTS_CONNECTSTATE_CLASS枚举class
WTS_CONNECTSTATE_CLASS enumeration class
我必须确定用户会话处于什么状态。即用户是否已登录并处于活动状态,或者用户是否未登录。为此,我使用函数 WTSEnumerateSessions
然后我正在检查 WTS_SESSION_INFO
这是来自这个具有状态成员的函数的 return。
根据在线文档。
WTSActive A user is logged on to the WinStation
WTSDisconnected
The WinStation is active but the client is disconnected.
问题是我目前登录到我的系统,但我当前会话的状态 return 是 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
,这是服务 运行.
的非交互式隔离会话的会话 ID
我必须确定用户会话处于什么状态。即用户是否已登录并处于活动状态,或者用户是否未登录。为此,我使用函数 WTSEnumerateSessions
然后我正在检查 WTS_SESSION_INFO
这是来自这个具有状态成员的函数的 return。
根据在线文档。
WTSActive A user is logged on to the WinStation
WTSDisconnected The WinStation is active but the client is disconnected.
问题是我目前登录到我的系统,但我当前会话的状态 return 是 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
,这是服务 运行.