Как я могу различить инициируемые пользователем и инициированные системой процессы? - PullRequest
2 голосов
/ 29 декабря 2010

Мой фрагмент кода выглядит так: -

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();  
}  

На самом деле я хочу остановить все процессы, инициированные пользователем, но не процессы, инициированные системой.

Ответы [ 2 ]

2 голосов
/ 29 декабря 2010

Чтобы уничтожить большинство пользовательских процессов:

 System.Diagnostics.Process.Start("shutdown -l");
2 голосов
/ 29 декабря 2010

Найдено здесь на Bytes.com: Получить имя учетной записи процесса .

Вы можете использовать System.Management и класс Win32_Process.

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]);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...