c# - 如何列出在 Windows 中运行的所有进程?

标签 c# .net pid diagnostics

我想找到一种方法来遍历所有事件进程并对它们进行诊断检查(内存使用情况、cpu 时间等)有点类似于任务管理器。

问题分为两部分:

  1. 找到所有进程
  2. 查找有关它们的诊断属性

我什至不确定在哪个命名空间中查看它。任何帮助/提示/链接都非常感谢。

最佳答案

查找所有进程

你可以通过 Process 类做到这一点

using System.Diagnostics;
...
var allProcesses = Process.GetProcesses();

运行诊断

你能在这里给我们更多的信息吗?不清楚您想做什么。

Process 类提供了一些可能对您有所帮助的信息。可以在这个类中查询

  • 所有线程
  • 主窗口句柄
  • 所有加载的模块
  • 有关内存的各种诊断信息(分页、虚拟、工作集等...)
  • 基本进程信息(id、名称、磁盘位置)

编辑

OP 提到他们想要获取内存和 CPU 信息。这些属性在 Process 类上很容易获得(由 GetProcesses() 返回)。下面是列出所有受支持属性的 MSDN 页面。有各种可用的内存和 CPU 可以满足您的需求。

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx

代码:

将此行添加到您的使用列表中:

using System.Diagnostics;

现在您可以使用 Process.GetProcesses() 方法获取进程列表,如本例所示:

Process[] processlist = Process.GetProcesses();

foreach (Process theprocess in processlist)
{
    Console.WriteLine("Process: {0} ID: {1}", theprocess.ProcessName, theprocess.Id);
}

关于c# - 如何列出在 Windows 中运行的所有进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/648410/

相关文章:

c# - 我可以在 C# 的设计时迭代引用的程序集吗?

c# - C++/命令行界面 : why should I use it?

c# - 提取渐变画笔属性

c# - C# 中的 Array.ICollection.Count 属性

Python:使用 PID 文件守护进程

function - erlang 改变一个有趣的环境

c# - 静态方法中的泛型参数正在调用同一个类——有更好的选择吗?

c# - 如何在c#task.whenall方法中获取http调用时间?

c# - 使用 new 创建时命名 ValueTuple 属性

linux - 通过系统 PID 获取内部 docker PID