private void btnDisconnectAllSession_ItemClick(object sender, ItemClickEventArgs e)
 {
     for (int i = 0; i < listSessions.Count; i++)
     {
         if (listSessions[i].connectedState == Enums.CONNECTSTATE_CLASS.Active)
         {
             bool kq = ListSessions.DisconnectUserSession(WTS_CURRENT_SERVER_HANDLE, i, false);
         }
     }
     LoadListSession();
 }
        public void LoadListSession(bool isCheck)
        {
            var listOldSessions = listSessions;

            listSessions = ListSessions.ListUsers(Environment.MachineName);
            gridListSession.DataSource = listSessions;
            if (isCheck)
            {
                ListSessions.CheckSessionsChange(listOldSessions, listSessions);
            }
        }
Example #3
0
        // Tự động hóa việc Logoff các User ở trạng thái disconnected.

        public void RemoveDisconnectSessions(int sessionID)
        {
            int k = 0;

            foreach (DisconnectSession dcss in ListDisconnectedSessions)
            {
                if (dcss.SessionID == sessionID)
                {
                    ListDisconnectedSessions.RemoveAt(k);
                    ListSessions.LogofftUserSession(WTS_CURRENT_SERVER_HANDLE, sessionID, false);
                    break;
                }
                k++;
            }
        }
        private void btnDisconnectSession_ItemClick(object sender, ItemClickEventArgs e)
        {
            int index     = gridView1.FocusedRowHandle;
            int sessionID = listSessions[index].sessionID;

            bool kq = ListSessions.DisconnectUserSession(WTS_CURRENT_SERVER_HANDLE, sessionID, false);

            if (kq)
            {
                MessageBox.Show("Ngắt kết nối " + listSessions[index].userName + " thành công!!");
                LoadListSession();
            }
            else
            {
                MessageBox.Show("Lỗi!!!!");
            }
        }
        private void btnDisconnectAllSession_ItemClick(object sender, ItemClickEventArgs e)
        {
            List <FilterLogoffUser> listFilter = PDCSS.Load_FilterLogoffUsers();
            bool isDisconnect, result;
            int  numError = 0;

            timerSession.Enabled = false;
            for (int i = 0; i < listSessions.Count; i++)
            {
                if (listSessions[i].connectedState == CONNECTSTATE_CLASS.Active)
                {
                    isDisconnect = true;
                    foreach (var obj in listFilter)
                    {
                        if (obj.UserName.Equals(listSessions[i].userName))
                        {
                            isDisconnect = false;
                            break;
                        }
                    }
                    if (isDisconnect == true)
                    {
                        result = ListSessions.DisconnectUserSession(WTS_CURRENT_SERVER_HANDLE, listSessions[i].sessionID, false);
                        if (result)
                        {
                            Logging.WriteLogSessions("User " + listSessions[i].userName + " đã bị ngắt kết nối bởi Admin", "Manual Disconnect");
                        }
                        else
                        {
                            Logging.WriteLogSessions("Admin thất bại khi ngắt kết nối User " + listSessions[i].userName, "Manual Disconnect");
                            numError++;
                        }
                    }
                }
            }
            if (numError == 0)
            {
                ShowNotification("Xong", false);
            }
            else
            {
                ShowNotification("Thất bại", true);
            }
            LoadListSession(false);
            timerSession.Enabled = true;
        }
        private void btnLogoffAllSession_ItemClick(object sender, ItemClickEventArgs e)
        {
            List <FilterLogoffUser> listFilter = PDCSS.Load_FilterLogoffUsers();
            bool isLogoff, result;
            int  numError = 0;

            timerSession.Enabled = false;
            for (int i = 0; i < listSessions.Count; i++)
            {
                isLogoff = true;
                foreach (var obj in listFilter)
                {
                    if (obj.UserName.Equals(listSessions[i].userName))
                    {
                        isLogoff = false;
                        break;
                    }
                }
                if (isLogoff == true)
                {
                    PDCSS.RemoveDisconnectSessions(i);
                    result = ListSessions.LogofftUserSession(WTS_CURRENT_SERVER_HANDLE, listSessions[i].sessionID, false);
                    if (result)
                    {
                        Logging.WriteLogSessions("User " + listSessions[i].userName + " đã bị tắt bởi Admin", "Manual Logoff");
                    }
                    else
                    {
                        Logging.WriteLogSessions("Admin thất bại khi tắt User " + listSessions[i].userName, "Manual Logoff");
                        numError++;
                    }
                }
            }
            if (numError == 0)
            {
                ShowNotification("Xong", false);
            }
            else
            {
                ShowNotification("Thất bại " + numError + " Users", false);
            }
            LoadListSession(false);
            timerSession.Enabled = true;
        }
        private void btnDisconnectSession_ItemClick(object sender, ItemClickEventArgs e)
        {
            int    index     = gridView1.FocusedRowHandle;
            int    sessionID = listSessions[index].sessionID;
            string userName  = listSessions[index].userName;

            bool result = ListSessions.DisconnectUserSession(WTS_CURRENT_SERVER_HANDLE, sessionID, false);

            if (result)
            {
                Logging.WriteLogSessions("User " + userName + " đã bị ngắt kết nối bởi Admin", "Manual Disconnect");
                ShowNotification("Thành công", false);
                LoadListSession(false);
            }
            else
            {
                Logging.WriteLogSessions("Admin thất bại khi ngắt kết nối User " + userName, "Manual Disconnect");
                ShowNotification("Thất bại", true);
            }
        }
 public void LoadListSession()
 {
     listSessions = ListSessions.ListUsers(Environment.MachineName);
     gridListSession.DataSource = listSessions;
 }
Example #9
0
        public void UpdateTimeDisconnection(Session[] listSessions, int timeUpdate)
        {
            int  k = 0;
            bool isDisconnect;

            for (int i = 0; i < listSessions.Length; i++)
            {
                int    currSessionID = listSessions[i].sessionID;
                string currUserName  = listSessions[i].userName;
                // Xét xem Session User này có nằm trong danh sách được lọc hay không.
                // Nếu có thì sẽ không tự động Logoff User này.
                isDisconnect     = true;
                List_FilterUsers = Load_FilterLogoffUsers();
                foreach (var obj in List_FilterUsers)
                {
                    if (obj.UserName.Equals(currUserName))
                    {
                        isDisconnect = false;
                        break;
                    }
                }
                if (isDisconnect == true)
                {
                    if (listSessions[i].connectedState == Enums.CONNECTSTATE_CLASS.Disconnected)
                    {
                        k = 0;
                        if (ListDisconnectedSessions.Count > 0)
                        {
                            foreach (DisconnectSession dcss in ListDisconnectedSessions)
                            {
                                if (dcss.SessionID == currSessionID)
                                {
                                    if (dcss.TimeHasDisconnected >= MaxTime)
                                    {
                                        // Đã đạt ngưỡng thời gian giới hạn. Hệ thống sẽ tự động logoff user này.
                                        ListDisconnectedSessions.RemoveAt(k);
                                        ListSessions.LogofftUserSession(WTS_CURRENT_SERVER_HANDLE, currSessionID, false);
                                        Logging.WriteLogSessions("User " + currUserName + " bị hệ thống tự động tắt khỏi máy chủ", "Auto Logoff");
                                        break;
                                    }
                                    else
                                    {
                                        dcss.TimeHasDisconnected += timeUpdate;
                                        break;
                                    }
                                }
                                else if (++k >= ListDisconnectedSessions.Count)
                                {
                                    // Nếu user này vừa mới disconnect nên chưa tồn tại trong danh sách disconnect
                                    // Ta thêm user này vào danh sách disconnect
                                    ListDisconnectedSessions.Add(new DisconnectSession(currSessionID, currUserName, timeUpdate));
                                    // Logging.WriteLogSessions("User " + currUserName + " rời khỏi máy chủ", "Disconnect");
                                    break;
                                }
                            }
                        }
                        else
                        {
                            // Nếu danh sách disconnect chưa có gì, ta thêm user vừa mới disconnect
                            ListDisconnectedSessions.Add(new DisconnectSession(currSessionID, currUserName, timeUpdate));
                            // Logging.WriteLogSessions("User " + currUserName + " thoát khỏi máy chủ", "Disconnect");
                        }
                    }
                    else
                    {
                        // Nếu User kết nối lại thì xóa user này trong danh sách disconnect sessions
                        k = 0;
                        foreach (DisconnectSession dcss in ListDisconnectedSessions)
                        {
                            if (dcss.SessionID == currSessionID)
                            {
                                ListDisconnectedSessions.RemoveAt(k);
                                // Logging.WriteLogSessions("User " + currUserName + " kết nối lại vào máy chủ", "Reconnect");
                                break;
                            }
                            k++;
                        }
                    }
                }
            }
        }