服务,是指执行指定系统功能的程序、例程或进程,以便支持其他程序,尤其是低层(接近硬件)程序。其实,服务就是一种特殊的应用程序,它从服务启动开始就一直处于运行状态,而普通应用程序在运行之后就处于休眠状态,直到用户再次对其进行操作;在WinXP里,服务是在系统加载以后就自动启动的,而不需要登陆,但自动运行的普通应用程序是在WinXP加载并登录以后才执行的。
 

  1. 安装可以作为服务运行的程序成为WinXP的服务;

     
  2. 安装不可以作为服务运行的程序(即普通的应用程序)成为WinXP的服务。

    使用安装工具:srvinstw.exe和srvany.exe,Win2000资源工具包中提供的工具;

    下面是手工添加服务的方法,适用找不到添加工具的时候手工添加服务。

    通过修改注册表来添加服务:

    在注册表器,展开分支“HKEY_LOCAL_MACHINE“SYSTEM“CurrentControlSet“Services”,在右侧窗格中显示的就是本机安装的服务项。如果要新建服务,只须“→新建→项”,然后为此项命名,如“test”;然后右击该项,选择“新建→字符串值”或“新建→Dword值”即可。

    添加一个服务项目具体需要添加的键值

    “DisplayName”,字符串值,对应服务名称;

    “Description”,字符串值,对应服务描述;

    “ImagePath”,字符串值,对应该服务程序所在的路径;

    “ObjectName”,字符串值,值为“LocalSystem”,表示本地登录;

    “ErrorControl”,Dword值,值为“1”;

    “Start”,Dword值,值为2表示自动运行,值为3表示手动运行,值为4表示禁止;

    “Type”,Dword值,应用程序对应10,其它对应20。

    另外,还要在“test”项下新建一个“Enum”项。如果有些必须通过srvany来加载的还必须添加另外的Parameters子项在该项中提供详细的要加为服务的程序所在的路径。而上面的那个路径就需要指到srvany所在的路径。
     

一、什么是Windows服务

     Windows服务也称为Windows Service,它是Windows操作系统和Windows网络的基础,属于系统核心的一部分,它支持着整个Windows的各种操作。诸如DNS客户端、打印程序、Windows更新服务、计划任务、Windows时间服务、告警器等服务,它们关系到机器能否正确运行。如果不能适当地管理这些服务,就会影响到机器的正常操作。
    一个服务首先是一个Win32可执行程序,或者是是rundll32.exe来运行一个.dll的方式形成的进程。
跟普通应用程序不一样,如打开WORD,有一个界面出来,但服务没有用户界面。也不能通过直接双击运行相应的.exe程序来运行。那Windows又是如何控制一个服务的?
    Windows的服务由更上一级的services.exe这个服务来管理,由它来管理,负责进行服务的启动、停止、运行,暂停等。我们最常用的操作就是通过Windows的服务MMC界面来完成相关操作。

一个服务首先是一个Win32可执行程序,或者是是rundll32.exe来运行一个.dll的方式形成的进程。

跟普通应用程序不一样,如打开WORD,有一个界面出来,但服务没有用户界面。也不能通过直接双击运行相应的.exe程序来运行。那Windows又是如何控制一个服务的?

Windows的服务由更上一级的services.exe这个服务来管理,由它来管理,负责进行服务的启动、停止、运行,暂停等。我们最常用的操作就是通过Windows的服务MMC界面来完成相关操作。

现在的流氓软件,越来越多把自己注册为一个服务。在Hijackthis的扫描日志中,一般会把非Windows系统的服务以023的方式列出来,如下面这段:

O23 - 未知 - Service: BKMARKS [提供传输协议的数据安全保护机制,有效维护数据传输中的安全及完整。] - C:“WINDOWS“SYSTEM32“RUNDLL.EXE

O23 - 未知 - Service: ewido anti-spyware 4.0 guard [ewido anti-spyware 4.0 guard] - D:“Program Files“ewido anti-spyware 4.0“guard.exe

O23 - 未知 - Service: KSD2Service [KSD2Service] - C:“WINDOWS“system32“SVCH0ST.exe

对于这些流氓软件,需要删除相关的.exe文件,使它不能再运行,或者直接清除这个服务本身,使计算机重启的时候,它不会再启动。

 

删除的办法有两个:

办法一: 用sc.exe这个Windows命令

开始运行cmd.exe,然后输入sc就可以看到了。使用办法很简单:sc delete “服务名”(如sc deleteService 83F9085F) 如针对上面的: sc delete KSD2Service

方法二:直接进行注册表(不推荐)

打开注册表器,找到下面的键值:HKEY_LOCAL_MACHINE“SYSTEM“CurrentControlSet “Services,一般服务会以相同的名字在这里显示一个主健,直接删除相关的键值便可。(HKEY_CURRENT_USER“SYSTEM “CurrentControlSet“Services 下可能也有,可在注册表中查找删除)

1、如果服务显示的是rundll32.exe,并且这个文件是位于system32目录下,那么就不能删除这个rundll32.exe文件,它是Windows系统的文件。这时只要清除相关的服务就可以了

2、如果一个服务删除了马上又自动建立了,说明后台有进程在监视、保护。需要先在进程管理器中杀掉相应的进程,或者启动后按F8,到安全模式下删除。

SC 的用法

描述:
        SC 是用于与服务控制管理器和服务进行通信的命令行程序。
用法:
        sc <server> [command] [service name] <option1> <option2>...


        选项 <server> 的格式为 "\\ServerName"
        键入 "sc [command]" 可以获得有关命令的进一步帮助
        命令:
          query-----------查询服务的状态,
                          或枚举服务类型的状态。
          queryex---------查询服务的扩展状态,
                          或枚举服务类型的状态。
          start-----------启动服务。
          pause-----------向服务发送 PAUSE 控制请求。
          interrogate-----向服务发送 INTERROGATE 控制请求。
          continue--------向服务发送 CONTINUE 控制请求。
          stop------------向服务发送 STOP 请求。
          config----------更改服务的配置(永久)。
          description-----更改服务的描述。
          failure---------更改服务失败时执行的操作。
          failureflag-----更改服务的失败操作标志。
          sidtype---------更改服务的服务 SID 类型。
          privs-----------更改服务的所需权限。
          qc--------------查询服务的配置信息。
          qdescription----查询服务的描述。
          qfailure--------查询失败时服务执行的操作。
          qfailureflag----查询服务的失败操作标志。
          qsidtype--------查询服务的服务 SID 类型。
          qprivs----------查询服务的所需权限。
          qtriggerinfo----查询服务的触发器参数。
          qpreferrednode--查询首选的服务 NUMA 节点。
          delete----------(从注册表)删除服务。
          create----------创建服务(将其添加到注册表)。
          control---------向服务发送控制。
          sdshow----------显示服务的安全描述符。
          sdset-----------设置服务的安全描述符。
          showsid---------显示相应于假定名称的 SID 字符串。
          triggerinfo-----配置服务的触发器参数。
          preferrednode---设置首选的服务 NUMA 节点。
          GetDisplayName--获取服务的 DisplayName
          GetKeyName------获取服务的 ServiceKeyName。
          EnumDepend------枚举服务的依存关系。

        下列命令不要求服务名称:
        sc <server> <command> <option>
          boot------------(ok | bad) 指示是否将上一次启动保存为
                          最近一次已知的正确启动配置
          Lock------------锁定服务数据库
          QueryLock-------查询 SCManager 数据库的 LockStatus
示例:
        sc start MyService

是否想参阅 QUERY 和 QUERYEX 命令的帮助? [ y | n ]: