我如何解决杀死过程的错误

  • 本文关键字:过程 错误 决杀 何解 c#
  • 更新时间 :
  • 英文 :


我是一名高中生,然后我正在为网络安全竞赛做准备。我写了一个不断检测并杀死过程的程序,但我不知道出了什么问题。它运行良好一段时间,然后退出。我该如何修复?

源代码↓

using System;
using System.Collections;
using System.Diagnostics;
namespace defense
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList white_list = Get_process();
            try
            {
                while (true)
                {
                    ArrayList bad_list = Get_process();
                    foreach (int pid in bad_list)
                    {
                        if (!white_list.Contains(pid))
                        {
                            Process.GetProcessById(pid).Kill();
                            Console.WriteLine($"process {pid} dead.");
                        }
                    }
                }
            }
            catch (Exception)
            {
            }
        }
        static ArrayList Get_process()
        {
            Process[] pss = Process.GetProcesses();
            ArrayList list = new ArrayList();
            foreach (Process ps in pss)
            {
                list.Add(ps.Id);
            }
            return list;
        }
    }
}

当我运行它并打开几个程序时:

process 10776 dead.
process 11580 dead.
process 12152 dead.
process 10660 dead.
请按任意键继续. . .

它正常运行一段时间,杀死一些过程,然后退出。这里发生了什么?

无论如何,感谢那些给我建议的人,希望您有美好的一天。

如果我正在写一个应用程序来做您正在做的事情,我可能会考虑这样写:

static async Task Main(string[] args)
{
    List<int> good = Process.GetProcesses().Select(x => x.Id).ToList();
    while (true)
    {
        await Task.Delay(TimeSpan.FromSeconds(1.0));
        List<int> bad = Process.GetProcesses().Select(x => x.Id).ToList();
        foreach (int pid in bad.Except(good))
        {
            Process.GetProcessById(pid).Kill();
            Console.WriteLine($"process {pid} dead.");
        }
    }
}

杀死这样的过程是一个坏主意。

最新更新