C# 如何区分用户启动的流程和系统启动的流程?

C# 如何区分用户启动的流程和系统启动的流程?,c#,.net,process,C#,.net,Process,我的代码片段如下:- KillUserProcess() { foreach (Process myProcess in Process.GetProcesses()) { // here I need to know which is system process and which is user process: like --if(myProcess.type==user) myProcess.K

我的代码片段如下:-

KillUserProcess()  
{  
  foreach (Process myProcess in Process.GetProcesses())   
   {  
      // here I need to know which is system process and which is user process:  
       like --if(myProcess.type==user)  
               myProcess.Kill();  
}  
实际上,我想停止所有用户启动的进程,但不是系统启动的进程

在Bytes.com上找到:

您可以使用System.Management和Win32_进程类

using System;
using System.Management;
using System.Diagnostics;
class App {
    public static void Main() {
    GetProcessInfo(Process.GetCurrentProcess().Handle. ToInt32());
    }

    static void GetProcessInfo(int handle)
    {
        using(ManagementObject proc = new ManagementObject("Win32_Process.Handle='" + handle.ToString() + "'"))
        {
            proc.Get();
            string[] s = new String[2];
            //Invoke the method and populate the array with the user name and domain
            proc.InvokeMethod("GetOwner",(object[])s);
            Console.WriteLine("User: " + s[1]+ "\\" + s[0]);
        }
    }
}

要终止大多数用户启动的进程,请执行以下操作:

 System.Diagnostics.Process.Start("shutdown -l");

你到底为什么要这么做?你会杀死你自己的进程explorer.exe和一些重要进程,其中一些进程会在托盘中放置一个图标,谁知道还有什么。你是如何定义“系统进程”的?由系统启动的进程?不是所有进程都是由系统以这样或那样的方式启动的吗?这里有一个非常简单的方法来确定WMI进程的所有者:实际上,通过我的应用程序,我想停止所有用户启动的进程。只是…@cdhowie:-当您打开任务管理器时,它会显示哪些是用户,哪些是系统进程。依赖shutdown.exe安全吗?它会一直在路上吗?所有运行这个程序的操作系统都有吗?哦。你真的想注销当前用户吗?@Cody,如果你杀死所有“用户启动的进程”,结果就是这样,不是吗?我不是在批评你的答案。当我读到这个问题的时候,我从来没有想过。我更惊讶的是它被接受了,而不是你发布了它。@Cody:我也很惊讶。