首页 | 麦客学吧 | 视频教程 | FLASH小游戏 | 素材下载 | 常用工具
您当前的位置:首页 > 程序开发 > C# > 正文

C#下的查杀进程

出处:麦客学吧 [2007-6-28 17:51:47] 作者:佚名 点击数:193

讨论交流:http://x8.maicoo.com/team/8781.html

    .net对进程管理的封装非常好,通过System.Diagnostics.Process.GetProcesses()方法可以获得系统内各进程的数组,通过枚举可获得系统内的所有进程(比Windows自带的进程浏览器看到的还多)。

    ProcessName属性获得的是文件名的前缀,即NotePad,不包含后面的.exe。


    要获得更多的信息,需要取得Modules属性数组,但并不是每个进程都能获取Modules属性,所以必须要使用try..catch语句排除异常。该数组的第一个成员[ 0 ].FileName包含了执行程序的完整文件名,等同于ProcessModule;序号大于0的成员往往包含该程序调用的dll信息,得到的结果很有点像反木马程序。

    Kill()方法用来杀进程,被杀的程序不会弹出类似保存文件的对话框,是个十足的冷血的快刀手。

    StartInfo属性是用于启动新进程的,不适用于检索已运行的进程。

private void btnProcess_Click(object sender, System.EventArgs e)
        {
            System.Diagnostics.Process []myPs ;
            myPs=System.Diagnostics.Process.GetProcesses();
            this.richTextBox1.Clear();
            foreach (System.Diagnostics.Process p   in myPs)
            {
                if (p.Id!=0 )
                {
                    string myS="进程名称"+p.ProcessName+"  ID:"+p.Id.ToString();
                    try//由于进程不同,有的进程不包含Modules信息,所以要用try保护
                    {
                        if (p.Modules !=null)
                            if (p.Modules.Count>0)
                            {
                                System.Diagnostics.ProcessModule pm=p.Modules[0];

                                myS+="\n Modules[0].FileName:"+pm.FileName;
                                myS+="\n Modules[0].ModuleName:"+pm.ModuleName;
                                myS+="\n Modules[0].FileVersionInfo:\n"+pm.FileVersionInfo.ToString();
                                if (pm.FileName.ToLower()==this.textBox1.Text.Trim().ToLower())
                    

【责任编辑: lanier

关于 C#下的查杀进程 的相关文章
素材中心
麦客酷站赏析频道

精彩图文推荐

关于本站 - 联系站长 - 广告服务 - 合作伙伴 - 网站地图 - 版权声明 - 报告错误 - 收藏本站 | Http://www.MaiCoo.com

Copyright © 2005 - 2008 MaiCoo.com All Rights Reserved

违法和不良信息举报中心 本站服务器空间和带宽由雷克斯网络提供赞助
浙ICP备06017818号