10

我正在寻找如何在 C# 中执行此操作,如下所示:

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

我正在使用这个语句,但是程序有不同的版本,比如cheatengine 或cheatengine-x86,我想关闭其中的任何一个,以'cheat' 开头,或者只是'cheat',只是为了避免使用旧版本。

4

5 回答 5

14
        System.Diagnostics.Process.GetProcesses()
                     .Where(x => x.ProcessName.StartsWith("cheate", StringComparison.OrdinalIgnoreCase))
                     .ToList()
                     .ForEach(x => x.Kill());
于 2013-01-31T18:07:11.017 回答
6

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

Regex regex = new Regex(@"cheate.*");
 foreach (Process p in Process.GetProcesses(".")){
    if(regex.Matches(p.ProcessName))
      p.Kill();
 }

像这样的东西。

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

于 2013-01-31T18:01:50.603 回答
3

改编自这里: 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(); 
}

这只是一个粗略的想法,你可以使用任何你想匹配的方法来处理。我推荐一些忽略大小写的东西,但我会对误报非常谨慎。如果它关闭了不应该关闭的东西,我不会对你的程序感到满意。

于 2013-01-31T18:07:04.457 回答
1

使用Process.GetProcesses()并使用 Linq 过滤您想要杀死的那些。

于 2013-01-31T18:03:26.690 回答
-1

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

System.Diagnostics.Process.GetProcesses()
                         .Where(x => x.ProcessName.ToLower()
                                      .Contains("chrome"))
                         .ToList()
                         .ForEach(x => x.Kill());
于 2019-10-17T06:33:31.440 回答