如何区分具有相同名称的多个进程并杀死所有在C#中以我的USERNAME运行的进程?

问题描述

我的系统上的任务管理器中正在运行多个名为COM SURROGATE(dllhost.exe)的进程。在其中,我需要杀死所有使用USERNAME运行的进程(一个正在使用SYstem /“”运行,因此无需杀死它)。

我需要执行以下操作,但仅适用于以myusername运行的dllhost进程:

{{1}}

解决方法

我找到了解决方案。以下是要点: 没有管理员访问权限,我们无法关闭由SYSTEM /“” / otheruser等运行的进程,因此process.kill()会引发访问被拒绝错误。

通过使用下面的内容,我们尝试使用dllhost.exe的名称终止所有进程(我们可以写任何进程名称),并使用Style.Hidden,以便用户看不到cmd提示符,甚至看不到消息。 消息可能像: 错误:具有PID 6332的进程“ dllhost.exe”无法终止。 原因:访问被拒绝。 [正在与系统或其他用户一起运行] 成功:PID 15320的进程“ dllhost.exe”已终止。 [使用我的用户名运行,该用户名可以关闭,没有任何问题]

System.Diagnostics.Process process = new System.Diagnostics.Process();
                System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
                startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                startInfo.FileName = "cmd.exe";
                startInfo.Arguments = "/C taskkill /IM dllhost.exe /F";
                process.StartInfo = startInfo;
                process.Start();

代码将仅关闭使用我的用户名运行的所有进程。干杯。