发布网友 发布时间:2022-04-21 19:20
共1个回答
热心网友 时间:2022-04-07 02:51
现在越来越多的人,都用上了WindowsXP这个新一代的操作系统,但在XP中只要同时按Ctrl+Shift+Esc打开“任务管理器”(TaskManager),选择“进程”(Processes),可以看到有若干个叫作Svchost.exe的进程存在,它们占用着大量的内存资源,是不是病毒?大家对这个进程如此关注并不奇怪,因为有几个一样的进程同时运行这种情况的确少见,再加上这几年层出不穷、花样翻新的病毒确实也让大家都有些杯弓蛇影、草木皆兵了。 我们知道Windows和Windows的应用软件都要使用大量的DLL(Dynamic Link Libraries,动态链接库)文件,这些DLL文件一般都要向Windows申请各种各样的Service(服务),而Svchost.exe就是其中一些服务的通用管理进程名(GenericHostProcessName),简单的说,Svchost.exe是这些服务的总称。每一个Svchost.exe进程以一个Group(组)的方式分组管理各种服务,每一个Svchost.exe进程(也就是一个Svchost组)中可以同时包含多个服务。WindowsXP中可以有多个Svchost.exe进程同时运行,之所以这样设计是为了更为方便地分类控制和调试各个进程和服务。 Svchost.exe在WindowsXP的系统目录\Windows\System32\下,在启动的时候,Svchost.exe根据注册表中的相关信息建立一个服务列表并根据这个列表加载相关的服务。一般来说,Svchost.exe总是根据HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\Current Version\Svchost下面的键值分组管理DLL申请的服务,这里的每一键值对应一个独立的Svchost.exe进程,也就是说这里的键值就是在任务管理器中我们看到的Svchost.exe进程。当然,由于这里的键值并不是一次性全部加载,而是根据需要才加载,因此这里的键值数要多于在任务管理器中看到的Svchost.exe进程数,而每个Svchost.exe进程所包含的服务名、参数值和DLL则来自HKEY_LOCAL_MACHINE\System\Current ControlSet\Services\Service这个键值。 在任务管理器中只能看到Svchost.exe进程而看不到该进程所包含的服务,要想了解每个Svchost.exe进程下到底有什么服务就需要使用别的方法。选择WindowsXP任务栏上的“开始/运行”,输入“CMD”并回车,打开WindowsXP的命令行窗口,输入“Tasklist/SVC”并回车就可以看到每个Svchost.exe进程及其所包含的各种服务(如图),其中ImageName(映像名)是进程的名称,PID(ProcessID)是进程标识,以数字形式表示,Services(服务)就是进程所包含的各种服务。可惜的是Tasklist只显示各种服务的缩写而不是全称,对于这些缩写一般只有对Windows系统内核十分了解的程序员才能明白其真正意义,它们主要是指网络、域名缓存、远程控制和应用程序接口等服务,当然普通的电脑用户也没必要去过多的了解这些十分专业的名称。如果用户还想进一步了解每个进程调用的DLL文件,可以使用“Tasklist/M”这个命令。使用Tasklist还可查看指定进程的情况,例如想要查看PID为728的进程的情况,可以使用命令“Tasklist/FI”PIDeq728“”. Tasklist还有许多命令参数,对它感兴趣的用户可以使用Tasklist/?得到详细的帮助信息。 另外补充一点,其实Svchost.exe早在Windows2000就已存在,只是作用没有在WindowsXP中这么明显,所以在Windows2000时代很少有人注意它的存在。在Windows2000中查看各个进程及服务的命令为“tlist-s”,查看指定进程及服务的命令是“tlist PID”. 占用内存大你可以通过以上方式来查看是什么文件在使用Svchost.exe