private void RefreshProcessList(string filter, bool hideUnrestricted) { using (var processes = new DisposableList <NtProcess>(NtProcess.GetProcesses(ProcessAccessRights.QueryInformation))) { processes.Sort((a, b) => a.ProcessId - b.ProcessId); IEnumerable <NtProcess> filtered = processes.Where(p => GetToken(p) != null); if (!String.IsNullOrWhiteSpace(filter)) { filter = filter.ToLower(); filtered = filtered.Where(p => p.FullPath.ToLower().Contains(filter)); } if (hideUnrestricted) { filtered = filtered.Where(p => IsRestrictedToken(p)); } ClearTree(treeViewProcesses); ClearList(listViewThreads); foreach (NtProcess entry in filtered) { AddProcessNode(entry); AddThreads(entry); } listViewThreads.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); listViewThreads.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); } }
private void RefreshProcessList(string filter, bool hideUnrestricted) { bool filter_name = !String.IsNullOrWhiteSpace(filter); ClearList(listViewProcesses); ClearList(listViewThreads); using (var processes = new DisposableList <NtProcess>(NtProcess.GetProcesses(ProcessAccessRights.QueryLimitedInformation))) { processes.Sort((a, b) => a.ProcessId - b.ProcessId); using (var tokens = new DisposableList <NtToken>(processes.Select(p => GetToken(p)))) { List <ListViewItem> procs = new List <ListViewItem>(); List <ListViewItem> threads = new List <ListViewItem>(); Debug.Assert(processes.Count == tokens.Count); for (int i = 0; i < processes.Count; ++i) { NtProcess p = processes[i]; NtToken t = tokens[i]; if (t == null || !t.IsAccessGranted(TokenAccessRights.Query)) { continue; } if (filter_name) { if (!p.FullPath.ToLower().Contains(filter.ToLower())) { continue; } } if (hideUnrestricted) { if (!IsRestrictedToken(t)) { continue; } } procs.Add(CreateProcessNode(p, t)); threads.AddRange(CreateThreads(p)); } listViewProcesses.Items.AddRange(procs.ToArray()); listViewThreads.Items.AddRange(threads.ToArray()); ResizeColumns(listViewProcesses); ResizeColumns(listViewThreads); } } }
private void RefreshProcessList(string filter, bool hideUnrestricted) { using (var processes = new DisposableList <NtProcess>(NtProcess.GetProcesses(ProcessAccessRights.QueryLimitedInformation))) { processes.Sort((a, b) => a.ProcessId - b.ProcessId); IEnumerable <NtProcess> filtered = processes.Where(p => GetToken(p) != null); if (!String.IsNullOrWhiteSpace(filter)) { filter = filter.ToLower(); filtered = filtered.Where(p => p.FullPath.ToLower().Contains(filter)); } if (hideUnrestricted) { filtered = filtered.Where(p => IsRestrictedToken(p)); } ClearList(listViewProcesses); ClearList(listViewThreads); List <ListViewItem> procs = new List <ListViewItem>(); List <ListViewItem> threads = new List <ListViewItem>(); foreach (NtProcess entry in filtered) { ListViewItem proc = CreateProcessNode(entry); if (proc != null) { procs.Add(proc); } threads.AddRange(CreateThreads(entry)); } listViewProcesses.Items.AddRange(procs.ToArray()); listViewThreads.Items.AddRange(threads.ToArray()); ResizeColumns(listViewProcesses); ResizeColumns(listViewThreads); } }
private void RefreshProcessList(string filter, bool hideUnrestricted) { using (var processes = new DisposableList<NtProcess>(NtProcess.GetProcesses(ProcessAccessRights.QueryInformation))) { processes.Sort((a, b) => a.ProcessId- b.ProcessId); IEnumerable<NtProcess> filtered = processes.Where(p => GetToken(p) != null); if (!String.IsNullOrWhiteSpace(filter)) { filter = filter.ToLower(); filtered = filtered.Where(p => p.FullPath.ToLower().Contains(filter)); } if (hideUnrestricted) { filtered = filtered.Where(p => IsRestrictedToken(p)); } ClearTree(treeViewProcesses); ClearList(listViewThreads); foreach (NtProcess entry in filtered) { AddProcessNode(entry); AddThreads(entry); } listViewThreads.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); listViewThreads.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); } }