2024年4月16日发(作者:)
高手 全面认识进程
很多朋友对进程都不太了解,有时在任务管理器中一旦看到有多个该进程(图
1中有6个),就以为自己的电脑中了病毒或木马,其实并非如此!正常情况下,windows
中可以有多个进程同时运行,例如Windows 2000至少有2个Svchost进程,
Windows XP中有4个以上,Windows 2003中则有更多,所以当你看到多个Svchost进程时,
未必就是病毒!
进程是干什么的?
文件存在于“%system root%system32”(例如C:Windowssystem32)
目录下,它是Windows NT核心的重要进程(Windows 9X没有该进程),专门为系统启动各
种服务的。例如调用文件,就会启动rpcss服务(remote procedure
call)。
实际上是一个服务宿主,它本身并不能给用户提供任何服务,但是可以用
来运行动态链接库DLL文件,从而启动对应的服务。进程可以同时启动多个服
务。
Svchost是如何启动系统服务的?
由于系统服务都是以动态链接库(DLL)形式实现的,它们把可执行程序指向Svchost,
因此Svchost只要调用某个动态链接库,即可启动对应的服务。那么Svchost启动某服务时,
又是如何知道应该调用哪个动态链接库?这是由于系统服务在注册表中都设置了相关参数,
因此Svchost通过读取某服务在注册表中的信息,即可知道应该调用哪个动态链接库,从而
启动该服务。
下面我们以Svchost启动helpsvc(Help and Support)服务为例,介绍其启动服务的方
法。在Windows XP中点击“开始” “运行”,输入“”命令,弹出服务对
话框,然后双击打开“Help and Support”服务属性对话框,可以看到helpsvc服务的可执
行文件的路径为“C: -k netsvcs” (如图2),说明
helpsvc服务是依靠SVCHOST调用“netsvcs”参数来实现的,而参数的内容则是存放在系
统注册表中的。
在运行对话框中输入“”后回车,打开注册表编辑器,找到
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceshelpsvc]项,找到类型为
“REG_EXPAND_SZ”的键“magePath”,其键值为“%SystemRoot%
-k netsvcs”(这就是在服务窗口中看到的服务启动命令),另外在“Parameters”子项中有
个名为“ServiceDll”的键,其值为
“%WINDIR%”,其中“”就是
helpsvc服务要使用的动态链接库文件。这样SVCHOST进程通过读取“helpsvc”服务注册
表信息,就能启动该服务了。
Svchost到底启动了哪些服务?


发布评论