顶好的小窝

闲时研究些小程序,编编小软件,写点小心得,兴许对你有用,欢迎来坐坐。

导航

C#下的查杀进程

    .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:      
1024
FileDescription:  IE地址栏搜索程序
Product:          地址栏搜索
ProductVersion:   
1024
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          英语(美国)

posted on 2006-05-13 10:54  顶好  阅读(1111)  评论(1编辑  收藏  举报