首 页 | 精品电影 | 音乐天堂 | 在线游戏 | Flash MTV | 三湘书屋 | 幽默笑话 | 三湘图库 | 美女写真 | IT知识库 | QQ贴图 | 加入书签

网页制作网络编程图形图象操作系统冲浪宝典软件教学网络安全认证考试通信技术电子商务业内动态书籍教程原码

最近更新 文章分类 多媒体类 精品软件

本站搜索:
您的位置:三湘时空 -> IT知识库 -> 文章分类 -> C#应用 -> C#下的查杀进程
C#下的查杀进程


文章类别:C#应用 来源: 作者: 发表日期:2006-5-18 字体:[ ]

小游戏 | 在线影院 | 幽默笑话 | 源码下载 | Flash MTV | 音乐试听 | 书屋 | 美女写真

    .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())
                                    p.Kill();
                            }
                    }
                    catch
                    {}
                    finally
                    {
                        this.richTextBox1.Text += myS+"\n==========================\n";
                    }
                }
            }

 

        程序的执行结果片段:

进程名称SearchNet  ID:3092
 Modules[0].FileName:C:\Program Files\SearchNet\SearchNet.exe
 Modules[0].ModuleName:SearchNet.exe
 Modules[0].FileVersionInfo:
File:             C:\Program Files\SearchNet\SearchNet.exe
InternalName:     SearchNet
OriginalFilename:
FileVersion:      1, 0, 2, 4
FileDescription:  IE地址栏搜索程序
Product:          地址栏搜索
ProductVersion:   1, 0, 2, 4
Debug:            False
Patched:          False
PreRelease:       False
PrivateBuild:     False
SpecialBuild:     False
Language          中文(中国)

==========================
进程名称svchost  ID:1700
 Modules[0].FileName:C:\WINDOWS\system32\svchost.exe
 Modules[0].ModuleName:svchost.exe
 Modules[0].FileVersionInfo:
File:             C:\WINDOWS\system32\svchost.exe
InternalName:     svchost.exe
OriginalFilename: svchost.exe
FileVersion:      5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)
FileDescription:  Generic Host Process for Win32 Services
Product:          Microsoft® Windows® Operating System
ProductVersion:   5.1.2600.2180
Debug:            False
Patched:          False
PreRelease:       False
PrivateBuild:     False
SpecialBuild:     False
Language          英语(美国)

上一篇:建立Microsoft SQL Server 2005数据仓库 下一篇:一个简单的数据操作类
本栏目热门文章
·C# Socket编程 2006-3-14
·[C#]解决读写包含汉字的txt文件时乱码的问题 2005-10-4
·c#操作word表格 2005-10-4
·在C#.net中将查询数据导入EXCEL表输出 2006-3-24
·使用C#在进度条中显示复制文件的进度 2005-11-13
·C#.Net网络程序开发-Socket篇 2006-3-14
·C#中使用SendMessage 2005-10-4
·利用C#进行AutoCAD的二次开发(一) 2005-10-4
·利用C#进行AutoCAD的二次开发(二) 2005-10-4
·用Visual C#获得计算机名称和IP地址 2005-10-4
新近更新文章
·C#中计算两个时间的差 2006-6-20
·基于Remoting透明代理的AOP组件 2006-6-20
·用CDO.Message打造邮件发送程序 2006-6-15
·C#箴言之用属性来访问类的私有成员 2006-6-15
·C#中父窗口和子窗口之间实现控件互操作 2006-6-15
·C# 中启动进程的三种方法 2006-6-12
·讲述c#中的类型转换 2006-6-9
·如何把html中的相对路径变成绝对路径 2006-6-9
·C#简单命名指南 2006-6-6
·在Excel中将连续多列相同数据项合并 2006-6-4
首 页 | 软件发布 | 广告联系 | 下载帮助 | 意见反馈 | 网站地图
  CopyRight? 2002-2004 WWW.SXSKY.NET? All Rights Reserved
三湘时空 站长QQ:82675303 Email: