繁体   English   中英

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

[英]How to differentiate multiple processes with the same name and to kill all those processes which are running with my USERNAME in C#?

我有多个名为 COM SURROGATE (dllhost.exe) 的进程正在我的系统的任务管理器中运行。 其中我需要杀死所有使用我的用户名运行的进程(一个正在使用 SYSTEM/"" 运行,所以不需要杀死它)。

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

Process[] runningProcess = Process.GetProcessesByName("dllhost");
                if(runningProcess.Length > 0 )
                {
                    foreach (var surrogateProcess in runningProcess)
                    {
                        surrogateProcess.Kill();
                    }
                }
  

我找到了解决方案。 以下是关键点:我们无法在没有管理员访问权限的情况下关闭由 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();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM