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); } }
private static void LogoffSession(string[] args) { if (args.Length < 3) { Console.WriteLine("Usage: SessionInfo logoff [server] [session id]"); return; } string serverName = args[1]; int sessionId = int.Parse(args[2]); using (ITerminalServer server = GetServerFromName(serverName)) { server.Open(); ITerminalServicesSession session = server.GetSession(sessionId); session.Logoff(); } }
private void ContextMenus(object sender, EventArgs e) { int selectedSessionID = 0; DataGridView datagridview = null; int selectedRowIndex = 0; if (tabControl.SelectedTab.Name != "dynaStatusTab") { var tabpage = tabControl.SelectedTab; datagridview = (DataGridView)tabpage.Controls.Find("DataGridView", true)[0]; selectedRowIndex = datagridview.SelectedRows[0].Index; selectedSessionID = Convert.ToInt16(datagridview.Rows[selectedRowIndex].Cells[3].Value); } else { selectedSessionID = Convert.ToInt16(IDSessionLabel.Text); } try { using (ITerminalServer server = new PuzzelLibrary.Terminal.Explorer().GetRemoteServer(HostName)) { server.Open(); ITerminalServicesSession session = server.GetSession(selectedSessionID); if (sender is ToolStripMenuItem) { switch (((ToolStripMenuItem)sender).Name) { case nameof(menuItemSessionDisconnect): { session.Disconnect(); MessageBox.Show(new Form() { TopMost = true }, "Sesja została rozłączona", "Rozłączanie sesji", MessageBoxButtons.OK, MessageBoxIcon.Information); BtnRefresh_Click(sender, e); break; } case nameof(menuItemSessionSendMessage): { using (var terms = new ExplorerFormSendMessage(HostName, selectedSessionID)) { terms.ShowDialog(); MessageBox.Show("Wiadomość wysłano", "Informacja", MessageBoxButtons.OK, MessageBoxIcon.Information); } break; } case nameof(menuItemSessionRemoteControl): { var ADCompResult = PuzzelLibrary.AD.Computer.Search.ByComputerName(HostName, "operatingSystemVersion"); var osVersionComplete = ADCompResult[0].GetDirectoryEntry().Properties["operatingSystemVersion"].Value.ToString().Split(" "); double osVersion = Convert.ToDouble(osVersionComplete[0].Replace('.', ',')); if (osVersion > 6.1) { PuzzelLibrary.ProcessExecutable.ProcExec.StartSimpleProcess("mstsc.exe", "/v:" + HostName + " /shadow:" + selectedSessionID + " /control /NoConsentPrompt"); } else { PuzzelLibrary.Terminal.TerminalExplorer Term = new PuzzelLibrary.Terminal.TerminalExplorer(); Term.ConnectToSession(HostName, selectedSessionID); } break; } case nameof(menuItemSessionLogoff): { session.Logoff(); MessageBox.Show(new Form() { TopMost = true }, "Sesja została wylogowana", "Wylogowywanie sesji", MessageBoxButtons.OK, MessageBoxIcon.Information); BtnRefresh_Click(sender, e); break; } case nameof(menuItemSessionStatus): { DynaStatusTab(session, selectedSessionID); break; } case nameof(menuItemSessionProcesses): { DynaProcessTab(server, session, selectedSessionID); break; } case "KillProcess": { var processId = Convert.ToInt16(datagridview.Rows[selectedRowIndex].Cells[4].Value); var process = server.GetProcess(processId); process.Kill(); RefreshProcesses(sender, server, session, selectedSessionID); MessageBox.Show("Zabito aplikację"); break; } } } else { switch (((Button)sender).Name) { case nameof(btnRefreshNow): { if (tabControl.SelectedTab.Name == "dynaProcesTab") { RefreshProcesses(sender, server, session, selectedSessionID); break; } if (tabControl.SelectedTab.Name == "dynaStatusTab") { RefreshStatus(session, selectedSessionID); break; } break; } } } server.Close(); } } catch (Exception ex) { PuzzelLibrary.Debug.LogsCollector.GetLogs(ex, HostName); } }