public static void LogOffSession(ITerminalServer Server, int sessionID) { using (ITerminalServer server = Server) { server.Open(); ITerminalServicesSession session = server.GetSession(sessionID); session.Logoff(false); server.Close(); MessageBox.Show(new Form() { TopMost = true }, "Wysłano instrukcję wyłączenia sesji", "Rozłączanie sesji", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
//Возвращает список сеансов с сервера(имя сервера в качестве параметра) public void getSessionList() { IList <ITerminalServicesSession> serverSession; int countSession = 0; serverSessionList.Clear(); //Далее идет код для подключения к серверу ITerminalServicesManager manager = new TerminalServicesManager(); using (ITerminalServer server = manager.GetRemoteServer(serverName)) { server.Open(); // Перебираем все сеансы на сервере. try { serverSession = server.GetSessions(); } catch (Exception ex) { serverStatus = ex.Message; serverSession = null; log.appendLog(MethodBase.GetCurrentMethod().ReflectedType.Name + "\n" + MethodBase.GetCurrentMethod().Name + "\n" + ex + "\n" + Application.UserAppDataPath); } server.Close(); if (serverSession != null) { foreach (ITerminalServicesSession session in serverSession) { //Фильтруем системный сеанс с Id 0. Отбираем сеансы в статусе Active или в статусе Disconnected, но не с пустым именем if (session.SessionId != 0 && ((session.ConnectionState == ConnectionState.Active) || (session.ConnectionState == ConnectionState.Disconnected && session.UserName != ""))) { serverSessionList.Add(session); countSession++; } } } } sessionCount = countSession; lastCheck = DateTime.Now.ToString(); }