C# - 通过其名称的一部分来杀死进程

时间:2013-01-31 17:59:03

标签: c#

我正在寻找如何在C#中这样做:

foreach (Process proc in Process.GetProcessesByName("cheatengine-x86_64"))
{
    proc.Kill();
}

我正在使用这个声明,但是有不同版本的程序,比如cheatengine或cheatengine-x86,我想关闭其中任何一个,从名字'cheat'开始,或者只是'cheate' ,只是为了避免旧版本。

5 个答案:

答案 0 :(得分:10)

System.Diagnostics.Process.GetProcesses()
                         .Where(x => x.ProcessName.ToLower()
                                      .StartsWith("cheate"))
                         .ToList()
                         .ForEach(x => x.Kill());

答案 1 :(得分:4)

您可以遍历每个进程名称,然后将其与正则表达式匹配,然后在匹配时将其终止。

Regex regex = new Regex(@"cheate.*");
 foreach (Process p in Process.GetProcesses(".")){
    if(regex.Matches(p.ProcessName))
      p.Kill();
 }
像这样的东西。

这样做的好处是,您可以杀死以特定正则表达式开头或结尾的任何进程。

答案 2 :(得分:1)

使用Process.GetProcesses()并使用Linq过滤您要杀死的内容。

答案 3 :(得分:1)

从这里改编:http://www.howtogeek.com/howto/programming/get-a-list-of-running-processes-in-c/

using System.Diagnostics;


Process[] processlist = Process.GetProcesses();

foreach(Process theprocess in processlist)
{

    if(theprocess.ProcessName.StartsWith("cheat");
         theprocess.Kill(); 
}

这只是一个粗略的想法,您可以使用任何您想要匹配过程的方法。我建议忽略大小写的东西,但我会对误报非常谨慎。如果它关闭了不应该的东西,我会对你的程序不满意。

答案 4 :(得分:0)

当包含特定字符串时,这将终止进程

System.Diagnostics.Process.GetProcesses()
                         .Where(x => x.ProcessName.ToLower()
                                      .Contains("chrome"))
                         .ToList()
                         .ForEach(x => x.Kill());