如何杀死在特定用户帐户下运行的特定进程

2 c# windows

如何杀死在特定用户帐户下运行的特定进程.用C#?

谢谢,

Tho*_*que 5

var processes = from p in Process.GetProcessesByName(nameOfTheProcess)
                where p.StartInfo.UserName == nameOfTheUser
                select p;

foreach(Process p in processes) p.Kill();
Run Code Online (Sandbox Code Playgroud)

编辑:正如Fredrik指出的那样,没有为GetProcesses获取的进程设置UserName属性.这是一个使用WMI获取用户名的修改版本(此处找到GetProcessOwner方法):

static void KillProcessByNameAndUserName(string processName, string userName)
{
    var processes = from p in Process.GetProcessesByName(processName)
                    where GetProcessOwner(p.Id) == userName
                    select p;

    foreach(Process p in processes) p.Kill();
}

static string GetProcessOwner(int processId)
{

    string query = “Select * From Win32_Process Where ProcessID = “ + processId;
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
    ManagementObjectCollection processList = searcher.Get();

    foreach (ManagementObject obj in processList)
    {
        string[] argList = new string[] { string.Empty };
        int returnVal = Convert.ToInt32(obj.InvokeMethod(“GetOwner”, argList));
        if (returnVal == 0)
            return argList[0];
    }

    return “NO OWNER”;

}
Run Code Online (Sandbox Code Playgroud)