How to get process "type" (App, Background Process, or Windows Process)

5.4k views Asked by At

I am trying to get a list of all processes which are of the type "app" (as opposed to "Background Process" or "Windows Process").

"App" type

Unfortunately, although I know that...

var processList = Process.GetProcesses();

will get me a list of all processes running on the system, I am at a loss for how to get the 'type' of the process. 'Process' does have a method 'GetType', but it doesn't seem to refer to the "type" that I'm referring to, and that TaskManager refers to in the above image.

Does anyone know how I can get this value that Task Manager refers to as "type" into a variable for a given process?

Note: C#.

2

There are 2 answers

0
Razor23 Donetsk On

I couldn't find the exact answer, but I found what helps me. You need to use the MainWindowHandle property of class Process.

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

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

Warning

If you try to get proc.MainModule.FileName you may see the Win32Exception exception. To avoid this issue I compile my project as x64 (your project -> properties -> Build -> Platform target -> x64).

0
12tall On

Meet the same question, and find an answer in the follow link:https://devblogs.microsoft.com/oldnewthing/20171219-00/?p=97606

  • If the process has a visible window, then Task Manager calls it an “App”.
  • If the process is marked as critical, then Task Manager calls it a “Windows Process”.
  • Otherwise, Task Manager calls it a “Background Process”.