函数原型: BOOL WTSEnumerateSessions( HANDLE hServer, DWORD Reserved, DWORD Version, PWTS_SESSION_INFO* ppSessionInfo, DWORD* pCount ); 作用:对当前系统的session信息进行枚举。 参数说明: hServer:指定要对终端断服务枚举的句柄,本机可以的话可以为WTS_CURRENT_SERVER_HANDLE, 或者NULL Reserved:系统保留位,必须为0 Version:指定枚举请求的版本,必须为1 ppSessionInfo:一个WTS_SESSION_INFO结构 可以看一下该结构的定义: typedef struct _WTS_SESSION_INFO { DWORD SessionId; LPTSTR pWinStationName; WTS_CONNECTSTATE_CLASS State; } WTS_SESSION_INFO, * PWTS_SESSION_INFO; 该结构中包含绘画ID, Windows空间站名,session的状态,此状态为枚举值。再次看下一结构 typedef enum _WTS_CONNECTSTATE_CLASS { WTSActive, // User logged on to WinStation WTSConnected, // WinStation connected to client WTSConnectQuery, // In the process of connecting to client WTSShadow, // Shadowing another WinStation WTSDisconnected, // WinStation logged on without client WTSIdle, // Waiting for client to connect WTSListen, // WinStation is listening for connection WTSReset, // WinStation is being reset WTSDown, // WinStation is down due to error WTSInit, // WinStation in initialization } WTS_CONNECTSTATE_CLASS; pCount:返回Session的数量,为输出参数 举例说明:
void main() { PWTS_SESSION_INFO psi; DWORD dwCount; BOOL bRet = WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1, &psi, &dwCount); if (!bRet) return 0; wstring strName; for (unsigned int i = 0; i < dwCount; i ++) { printf("%s \t", psi[i].pWinStationName); printf("%d \t", psi[i].SessionId); printf("%d \n", psi[i].State); } WTSFreeMemory(psi); }
原文地址:https://www.cnblogs.com/priarieNew/p/9755679.html
时间: 2024-10-19 11:24:40