C#遍历进程和根据进程识别码进程的问题
我做了个软件,他能禁止安装360,原理很简单,就是有个timer,然后在进程里不停的找他的安装程序名,
如果别人不改这个名字,没有问题,能关掉要杀的进程。
可是如果别人把名子改了,比如setup.exe是我要杀的,现在他给改成“a.exe”了,这时,在进程里就找不到setup.exe了
就杀不掉了。
这样是不满足要求的!

我想了个方法,就是找出每个exe的关键码,比如用winhex打开360的安装程序,里面肯定有www.360.cn这几个字,
我现在想遍历所有进程,读出每个进程的内容,然后找里面有www.360.cn吗,
如果有,说明这个程序肯定和360有关,就可以杀了他的安装程序。
请给我些代码。
string filename = Application.StartupPath+ "\\inst.exe";
            FileStream fs = File.OpenRead(filename);
            
            byte[] data = new byte[fs.Length];
            SafeRead(fs, data);
            string str = System.Text.Encoding.Default.GetString(data);
            //MessageBox.Show(str.Length.ToString());
            int i = str.IndexOf("www.360.cn");//这是识别码
            if (i > 0)
                MessageBox.Show("找到");
现在的问题是:怎么样遍历所有进程,读出每个进程的内容,然后找里面有www.360.cn吗,
System.Diagnostics.Process[] p;
                for (int i = 0; i < p.Length; i++)
                {
                    
                }

解决方案 »

  1.   

    用Process.GetProcesses()方法获得所有进程。。
    Process[] processes = Process.GetProcesses();
    foreach(Process process in processes)
    {
    //调用你写的方法判断。。
    }
      

  2.   

    通过Process.StartInfo.FileName获取进程对应的启动程序。。
      

  3.   

    病毒就是 这个做法啊 呵呵 Process.GetProcesses(); 应该可以
      

  4.   

    "我想了个方法,就是找出每个exe的关键码,比如用winhex打开360的安装程序,里面肯定有www.360.cn这几个字,"
    不需要,這種方法會慢死,而且消耗資源極多.
    直接獲取窗口名稱進行判斷.
    如果覺得不夠Process里面還有很多東西可以判斷,比如FileVersion里面有出品公司,版本號等等.
    class Program
        {
            static void Main(string[] args)
            {
                Process[] pros = Process.GetProcesses();
                foreach(Process pro in pros)
                {
                   // Console.ReadKey();
                    if (pro.MainWindowTitle.ToString().IndexOf("360")>=0)
                    {
                        //殺掉他
                    }
                }
            }
        }
      

  5.   

    枚举桌面窗体(EnumDesktopWindows),并获取窗口标题(GetWindowText),判断 有符合条件关闭
      

  6.   

    Win32 API:
    ReadProcessMemory
    再给你提供个思路:
    计算进程文件的MD5值,因为MD5值不会应为修改文件名而改变