2006年2月15日星期三

Windows杀进程的方法

  Windows XP/2000的任务管理器是一个非常有用的工具,能让你看到系统中正在运行哪些程序(进程),只要你平时多看任务管理器中的进程列表,熟悉系统的基本进程,就可以随时发现可疑进程,这对防范木马和病毒大有裨益!不过有一些可疑进程,你用任务管理器却无法杀掉,这该怎么办呢?

  一、哪些系统进程不能关掉

  Windows运行的时候,会启动多个进程。只要你按下“Ctrl+Alt+Del”键打开任务管理器,点击“查看”/选择列,勾选“PIO(进程标识符)”,然后单击“进程”标签,即可看到这些进程。不过有一些进程个人用户根本用不到,例如Systray.exe(显示系统托盘小喇叭图标)、Ctfmon.exe(微软Office输入法)、Winampa.exe等,我们完全可以禁止它们,这样做并不会影响系统的正常运行。

  二、如何关闭任务管理器杀不了的进程

  如果你在任务管理器中无法关闭某个可疑进程,可以使用下面的方法强行关闭,注意不要杀掉进程表中的系统核心进程:

  1.使用Windows XP/2000自带的工具

  从Windows 2000开始,Windows系统就自带了一个用户态调试工具Ntsd,它能够杀掉大部分进程,因为被调试器附着的进程会随调试器一起退出,所以只要你在命令行下使用Ntsd调出某进程,然后退出Ntsd即可终止该进程,而且使用Ntsd会自动获得Debug权限,因此Ntsd能杀掉大部分的进程。

  操作方法:单击“开始”/程序/附件/命令提示符,输入命令:ntsd -c q -p PID(把最后那个PID,改成你要终止的进程的PID)。在进程列表中你可以查到某个进程的PID,例如我们要关闭图1中的Explorer.exe进程,输入:ntsd -c q -p 408即可。

  以上参数-p表示后面跟随的是进程PID, -c q表示执行退出Ntsd的调试命令,从命令行把以上参数传递过去就行了。

  2. 使用专门的软件来杀进程

  任务管理器杀不掉的进程,你可以使用专门的软件关闭。有很多软件可以杀进程,下面是一个VB编写的杀进程的例子代码,供参考。

Dim objWMIService As Object
Dim colProcesslist As Object
Dim objProcess As Object
Set objWMIService = CreateObject("winmgmts:{impersonationLevel=Impersonate}!rootcimv2")
Set colProcesslist = objWMIService.ExecQuery("select * from win32_process where name='wy.exe'")
For Each objProcess In colProcesslist
    objProcess.Terminate
Next