瑞星卡卡安全论坛

首页 » 技术交流区 » 系统软件 » svchost.exe 进程项的用户名有几个
小哈姆 - 2008-8-6 22:07:00
svchost.exe 的用户名有几个啊,我的程序进程中有很多啊,而且不一样.还有,这是什么文件啊(对电脑比较文盲)

用户系统信息:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
ADL - 2008-8-6 22:23:00
svchost.exe
进程文件: svchost or svchost.exe
进程名称: Service Host Process
描述: Service Host Process是一个标准的动态连接库主机处理服务。
是否为系统进程: 是
---------------------------
Svchost.exe:这个进程要着重说明一下,有不少朋友都有这种错觉:若是在“任务管理器”中看到多个Svchost.exe在运行,就觉得是有病毒了。
其实并不一定,系统启动的时候,Svchost.exe将检查注册表中的位置来创建需要加载的服务列表,如果多个Svchost.exe同时运行,则表明当前有多组服务处于活动状态;多个DLL文件正在调用它。

在系统资源紧张的情况下,我们可以选择结束一些附加进程,以增加资源,起到优化系统的作用。在排除基本系统及附加进程后,新增的陌生进程就值得被大家怀疑了。
ADL - 2008-8-6 22:23:00
有时在任务管理器中一旦看到有多个该进程,就以为自己的电脑中了病毒或木马,其实并非如此!正常情况下,Windows中可以有多个svchost.exe进程同时运行,例如Windows 2000至少有2个svchost进程,Windows XP中有4个以上,Windows 2003中则有更多,所以当你看到多个svchost进程时,未必就是病毒!

svchost.exe进程是干什么的?

svchost.exe文件存在于“%system root%system32”(例如C:Windowssystem32)目录下,它是Windows NT核心的重要进程(Windows 9X没有该进程),专门为系统启动各种服务的。例如svchost.exe调用rpcss.dll文件,就会启动rpcss服务(remote procedure call)。

svchost.exe实际上是一个服务宿主,它本身并不能给用户提供任何服务,但是可以用来运行动态链接库DLL文件,从而启动对应的服务。svchost.exe进程可以同时启动多个服务。

svchost是如何启动系统服务的?


由于系统服务都是以动态链接库(DLL)形式实现的,它们把可执行程序指向svchost,因此svchost只要调用某个动态链接库,即可启动对应的服务。那么svchost启动某服务时,又是如何知道应该调用哪个动态链接库?由于系统服务在注册表中都设置了相关参数,因此svchost通过读取某服务在注册表中的信息,即可知道应该调用哪个动态链接库,从而启动该服务。

下面我们以svchost启动helpsvc(Help and Support)服务为例,介绍其启动服务的方法。在Windows XP中点击“开始”“运行”,输入“services.msc”命令,弹出服务对话框,然后双击打开“Help and Support”服务属性对话框,可以看到helpsvc服务的可执行文件的路径为“C:WINDOWSSystem32svchost.exe -k netsvcs” ,说明helpsvc服务是依靠SVCHOST调用“netsvcs”参数来实现的,而参数的内容则是存放在系统注册表中的。

在运行对话框中输入“regedit.exe”后回车,打开注册表编辑器,找到[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceshelpsvc]项,找到类型为“REG_EXPAND_SZ”的键“magePath”,其键值为“%SystemRoot%System32svchost.exe -k netsvcs”(这就是在服务窗口中看到的服务启动命令),另外在“Parameters”子项中有个名为“ServiceDll”的键,其值为“%WINDIR%PCHealthHelpCtrBinariespchsvc.dll”,其中“pchsvc.dll”就是helpsvc服务要使用的动态链接库文件。这样SVCHOST进程通过读取“helpsvc”服务注册表信息,就能启动该服务了。

svchost到底启动了哪些服务?

如果你想了解每个SVCHOST进程当前到底提供了哪些系统服务,可以在命令提示符下输入命令来查看。例如在Windows XP中,打开“命令提示符”,键入tasklist /svc命令查看;在Windows 2000中,则输入“Tlist -S”命令来查看。

如果你在Windows XP中,想得到所有进程的详细信息,可以打开“命令提示符”,键入tasklist /svc >abc.txt 命令,于是在当前目录中,将会生成一个abc.txt文件,其内容就是当前正在运行的所有进程情况,例如进程名、PID号、该进程启动了哪些服务。
fairsentence - 2008-8-6 22:25:00
服务对应的 2 进制文件可以分作可执行文件和 DLL 动态链接库文件两类。对于可执行
文件来说,其本身就是服务的宿主程序,而对于 DLL 动态链接库来说,需要一个宿主程序
来引导服务的启动。
  Svchost.exe,是大多数WIndows 服务的宿主程序。Svchost.exe 程序就是一个用于加
载服务对应的2 进制文件类型为 DLL 的宿主程序。
  Svchost.exe 一般位于%systemroot%\system32  目录下面,另外,如果启用了 DllCache
功能,还可能存在于%systemroot%\system32\dllcache          目录下。另外,如果 Windows
Service  Pack  不是使用集成安装的,那么还可能存在于%systemroot%\ServicePack              目录
下。除此之外,svchost.exe 不应该存在于其他的目录下面。如果存在,那么这个svchost.exe
可能不是系统自带的而是计算机病毒等一些恶意软件生成的,请小心检查。
    Svchost.exe 作为服务的宿主程序,在启动的时候,通过以下方法来启动服务:系统启
动的时候,系统读取注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\SvcHost 下的键值。在这个分支下,有很多键值类型为 REG_MULTI_SZ
的键值,每一个键值代表一组服务。Svchost.exe                  的每个实例将执行一个键值类型为
REG_MULTI_SZ 的键值,举例来说,当svchost.exe 开始读取 netsvcs 的时候,系统将创
建一个svchost.exe 的实例(在任务管理器里面呈现为进程)来处理netsvcs 键值的数据。
所有在 netsvcs  里面描述的服务将运行于一个 svchost.exe  进程里面,也就是说,一个
svchost.exe 将处理所有 netsvcs 里面记录的服务。这就是所谓的宿主的概念。不过有一点
需要注意,如果有任何一个服务发生问题,可能导致宿主程序svchost.exe 崩溃,甚至导致
Windows 崩溃。
  在不同的系统中,svchost.exe  的实例数目是不相同的。这是因为微软将不同的服务归
结到不同的svchost.exe 实例,在Windows Server 2003 下,RpcSs 服务就单独的由一个
svchost.exe 负责,这是为了保证不会由于其他服务的错误而导致整个svchost.exe 进程错
误。我们可以这样理解:如果有一个svchost.exe 作为2 个服务的宿主,其中一个是系统重
要的服务 A,如果A 停止,则整个系统就崩溃,而另外一个服务是 B,B 不是一个重要的
服务,停止 B 不会引起整个系统的崩溃。如果某一天服务 B 发生异常,导致 B 的宿主程序
svchost.exe 崩溃,那么也会导致服务A 崩溃,从而导致系统崩漏。因此,一个svchost.exe
作为几个服务的宿主是很重要的,也不要对比自己的系统里面的svchost.exe 实例数量为什
么要比别人的多,影响svchost.exe 实例数量完全决定于你开启的服务的数量。
  要确定一个 svchost.exe 作为哪些服务的宿主,可以在命令行方式下运行  tasklist  /svc
查看(Windows XP/Server2003)。如图所示。
1
查看完整版本: svchost.exe 进程项的用户名有几个