private void KillProcess(params Process[] processes) { foreach (var item in processes) { var process = Process.GetProcessesByName(item.ProcessName).Single(); try { if (process != null && !AllowedProcessesList.Select(a => a.ProcessName).Contains(process.ProcessName)) { var assessment = EvaluatorProcess.GetProcessType(process); if (assessment == RM_APP_TYPE.RmExplorer || assessment == RM_APP_TYPE.RmMainWindow || assessment == RM_APP_TYPE.RmConsole || assessment == RM_APP_TYPE.RmUnknownApp || assessment == RM_APP_TYPE.RmOtherWindow) { process.Kill(); LogsList = LogsList.Concat(new List <string>() { $"Закрыт: {process.ProcessName} - {DateTime.Now}" }).ToList(); } else { AllProcessesList = AllProcessesList.Concat(new List <Process>() { process }).ToList(); } } } catch { } } }
public void MoveAllowedToAll(object sender, EventArgs e) { IEnumerable <Process> selected = AllowedList.SelectedItems.Cast <Process>().ToArray(); AllowedProcessesList = AllowedProcessesList.Except(selected).ToList(); KillProcess(selected.ToArray()); }
public MainWindow() { InitializeComponent(); this.DataContext = this; AllProcessesList = Process.GetProcesses().OrderBy(a => a.ProcessName).ToList(); AllowedProcessesList = AllProcessesList; AllowedProcessesList.Add(Process.GetCurrentProcess()); LogsList = new List <string>(); startWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace")); startWatch.EventArrived += StartProcess; startWatch.Start(); // всегда запускать от имени администратора Closed += Dispose; }
public void MoveAllToAllowed(object sender, EventArgs e) { IEnumerable <Process> selected = AllList.SelectedItems.Cast <Process>(); AllowedProcessesList = AllowedProcessesList.Concat(selected).ToList(); }