Windows服务基础知识

简介

几乎在每种操作系统都提供一种在系统启动时刻启动进程的机制,这种进程不依赖于任何交互式用户服务。在windows中这样的进程称为windows服务(windows service)。
服务有两种类型:

  • 服务应用程序:服务应用程序必须满足SCM(Service Control Manager)服务控制管理器的接口规范,由SCM进行管理,因此需要与SCM进行通信,通知SCM当前服务的状态。
  • 驱动服务程序:驱动服务程序必须满足设备驱动接口协议,不与SCM进行交互,但也由SCM管理。

可以通过在运行下services.msc来启动服务控制面板,也可以通过右键点击计算机->管理->服务与应用程序查看当前系统有哪些服务应用程序:
这里写图片描述
选中其中的某个服务,右键点击属性,可以查看选中服务的基本信息,登录用户,启动失败时的设置以及依赖于哪些其他服务,例如:
这里写图片描述
windows服务由三部分构成:服务应用(service application)、服务控制程序(service control program)、服务控制管理器(service control mannager)。

服务控制管理器SCM

SCM由系统启动时加载,对应%SystemRoot%\System32\Services.exe程序,是一个RPC(remote procedure call)服务,因此也可以通过它远程控制服务程序。SCM维护着一个系统已经安装的服务的数据库,SCM通过此数据库管理服务程序的添加、修改、和配置,该数据库存储在注册表的如下键值中:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

该节点下的每个键都是一个服务,每个键下都存储了当前服务的一些基本信息,例如:
这里写图片描述
各个键值对应关系如下:

  • Start:服务的启动类型,0表示由Winload预先加载驱动程序,1表示在Winload预先加载的驱动程序之后再加载该驱动程序,2表示自动启动,3表示按照要求启动,4表示禁止启动。
  • ErrorControl:服务错误控制, 0表示服务返回的任何错误都被忽略,1表示如果服务报告了一个错误则写入一个事件日志消息
  • Type:服务类型,1表示设备驱动程序,2内核模式的文件驱动程序,16表示该服务为一个独占的应用程序,32表示该服务与其他程序共享一个应用程序。
  • Group:组的名称
  • ImagePath:服务程序的可执行文件路径
  • DependOnGroup:指定组中的服务已加载,该服务才能启动
  • DependOnService:指定服务所依赖的其他服务
  • ObjectName:指定服务在哪个账户下运行
  • DisplayName:服务的显示名称
  • Description:服务的说明
  • FailureActions:当服务进程非正常退出时,应该采取的动作说明

服务除了通过服务控制面板来查看设置之外,还能够通过SC命令来设置:

sc [ServerName] Command ServiceName

ServerName - 可选,指定服务所在的服务器名称,不设置表示为本地
Command - 命令,查询或操作服务的参数
ServiceName - 要操作的服务的名称
可以通过输入sc来参考sc支持的命令有哪些:
这里写图片描述
还可以通过输入 sc command ?来查看具体命令的详细信息:
这里写图片描述

使用psexec.exe 使普通程序以system权限运行,例如:

psexec -i 0 -s notepad.exe -d
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值