如何获取进程“类型”(应用程序,后台进程或Windows进程)

时间:2014-11-23 08:01:06

标签: c# windows types process diagnostics

我正在尝试获取所有类型的进程列表" app" (而不是"后台进程"或" Windows进程")。

"App" type

不幸的是,虽然我知道......

var processList = Process.GetProcesses();

将为我提供系统上运行的所有进程的列表,我不知道如何获得'类型'这个过程。 '流程'确实有一种方法' GetType'但它似乎并没有引用"类型"我指的是,并且TaskManager在上面的图片中引用。

有谁知道如何获得任务管理器引用的值" type"变成给定过程的变量?

注意:C#。

2 个答案:

答案 0 :(得分:1)

我找不到确切的答案,但我发现有什么帮助我。您需要使用流程类的 MainWindowHandle 属性。

var processes = Process.GetProcesses().Where(pr => pr.MainWindowHandle != IntPtr.Zero);

foreach (Process proc in processes)
    Console.WriteLine(proc.ProcessName);

警告

如果您尝试获取 proc.MainModule.FileName ,您可能会看到Win32Exception异常。为了避免这个问题,我将我的项目编译为x64(您的项目 - >属性 - >构建 - >平台目标 - > x64)。

答案 1 :(得分:1)

遇到同样的问题,并在以下链接中找到答案:https://devblogs.microsoft.com/oldnewthing/20171219-00/?p=97606

  • 如果进程有一个可见的窗口,则任务管理器将其称为“应用程序”。
  • 如果进程是 marked as critical,则任务管理器将其称为“Windows 进程”。
  • 否则,任务管理器将其称为“后台进程”。