我正在寻找如何在C#中这样做:
foreach (Process proc in Process.GetProcessesByName("cheatengine-x86_64"))
{
proc.Kill();
}
我正在使用这个声明,但是有不同版本的程序,比如cheatengine或cheatengine-x86,我想关闭其中任何一个,从名字'cheat'开始,或者只是'cheate' ,只是为了避免旧版本。
答案 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());