文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院操作系统 Windows 2000谈谈WIN2K的服务
精品推荐
特别推荐
·Radmin 使用
·全面优化Win2K
·深入浅出Win2k计算机启动关机脚本
·Win2k建立安全WEB站点的解决方案
·加快速度 让Win XP搜索风格变成2000
·windows2000忘记密码的解决办法
·如何对Win 2000/2003系统DNS进行迁移
·Win2000服务器入侵前兆检测方法
·Win2000系统二十条超级应用技巧
·利用WIN2000实现两个网段的路由
热点TOP10
·Radmin 使用
·全自动安装Windows
·让Win 98/2K实现自动/手动IP共存
·怕忘密码?巧破NTFS下Win2000口令
·解决Win2000和XP网上邻居互访慢的问题
·Windows 2000 命令全集
·谈谈WIN2K的服务
·WIN2k ADVANCED SERVER群集安装
·Windows 2000的NAT配置方法
·Windows 2000中的加密技术被发现漏洞

谈谈WIN2K的服务

日期:2008年6月11日 作者:清风网络学院 查看:[大字体 中字体 小字体]


I、 摘要 
WIN NT下的服务就类似*NIX下面的守护进程一样,而且现在越来越多的软件开始设计成服务的形式,从XP推出之后,通过服务来实现多用户切换等就显得很有作用了。从安全角度来看待WIN的服务的话,也就因此有很多的话题,比如运行的权限、运行的时间等等。本文就从一些方面来介绍并谈谈WIN服务的一些东西,受水平限制,内容不精致。 

II、 关于WIN2K的服务 

WIN32服务由三部分组成:服务应用程序、服务控制程序(SCP)和服务控制管理器(SCM)。 

一、服务控制管理器 

服务控制管理器(Service Control Manager):在系统启动的时候开始,是WIN系统的一部分,它是一个远程过程调用(RPC)服务器。这也是WIN服务系统的核心。 
SCM主要负责下面的东西: 
·维护安装的服务数据库 
·在系统启动或者有命令的时候开始服务和驱动服务 
·枚举安装的服务和驱动 
·维护运行着的服务和驱动的状态 
·传输控制请求去运行服务 
·锁定和解锁服务数据库 
SCM维护着注册表中的服务数据库,位于:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services。其下的子键就是安装的服务和驱动服务。每个子键的名称就是服务名,当安装的时候由服务安全程序的 CreateService 函数指定。 

当系统安装的时候,最初的数据库就被创建。这个数据库包含系统启动时候的设备驱动。数据库中的每个服务和驱动的信息包括: 
·服务类型。服务执行时候是自己的进行还是同其他服务共享进行,是否是核心驱动还是文件系统驱动。 
·启动类型。服务或者驱动服务是否是在系统启动的时候自动启动还是,是否是由SCM来接受控制请求来启动。启动类型也表明服务是否被禁止。 
·错误控制等级。指明如果服务或者驱动服务启动失败的错误处理。 
·执行文件的全路径。 
·附加依赖信息决定启动的正确顺序。对于服务,这个信息包括在服务启动之前SCM需要先启动的指定服务,服务所属加载顺序组的名称,服务在组中启动顺序的标志符。对于驱动服务,这个信息包括驱动启动前需要启动的指定驱动。 
·对于服务,还有附加的帐号名称和密码。如果没有指定帐号,服务就使用LocalSystem帐号。 
·对于驱动,附加驱动对象名称,用于I/0系统加载设备驱动。如果没有指明对象名,I/O系统在驱动服务名称基础上创建一个默认的名称。 


二、服务控制程序 

服务控制程序(SCP)则是控制服务应用程序的功能块,也是服务应用程序同服务管理器(SCM)之间的桥梁。服务控制程序可以完成这些动作: 
·如果服务启动类型为SERVICE_DEMAND_START,那么服务控制程序来启动服务 
·发送控制请求给运行着的服务 
·查询运行着的服务的当前状态 
这些动作要求打开一个服务对象的句柄。 

·服务启动 

要启动一个服务,服务控制程序使用StartService 函数。如果数据库被锁定,那么StartService函数会失败。如果遇到这种情况,那么服务控制程序需要等待,并重新调用StartService。可以通过QueryServiceLockStatus来查询服务数据库的状态。 

当服务控制程序开始一个服务的时候,可以通过StartService函数来指定传递给服务ServiceMain 函数的参数。当创建一个新的线程去执行ServiceMain后,StartService就返回了。服务控制程序可以通过QueryServiceStatus 函数来查询被启动的服务的状态。在SERVICE_STATUS结构初始化中dwCurrentState应该是SERVICE_START_PENDING,而dwWaitHint则是一个毫秒的时间间隔,表示服务控制程序在调用QueryServiceStatus应该等待的时间。当初始化完成,服务就会改变服务的状态dwCurrentState 为SERVICE_RUNNING。 
如果服务在80秒,再加上最后的等待时间内没有改变它的状态,服务控制管理器确定服务已经停止响应,会记录事件并停止服务。 
如果程序在启动驱动服务,StartService会在设备驱动初始化完成后返回。 


·服务控制请求 

服务控制程序通过ControlService来发送一个控制请求给运行着的服务。这个函数指定控制值传递给指定服务的HandlerEx 函数。这个控制值可以是用户自定义码,也可以是下面这些基本控制码: 
·停止服务:SERVICE_CONTROL_STOP 
·暂停服务:SERVICE_CONTROL_PAUSE 
·恢复被暂停的服务:SERVICE_CONTROL_CONTINUE 
·返回服务的更新状态信息:SERVICE_CONTROL_INTERROGATE 

每个服务可以指定它接收和处理的控制值。要确定哪个基本控制值被服务接收,可以使用QueryServiceStatus 函数或者指定SERVICE_CONTROL_INTERROGATE 来调用ControlService 函数。SERVICE_STATUS结构中的dwControlsAccepted返回的是是否服务能被停止、暂停和恢复。所有的服务都能接收SERVICE_CONTROL_INTERROGATE QueryServiceStatus函数返回指定服务的最近状态,而不会获得服务本身更新的状态。使用SERVICE_CONTROL_INTERROGATE控制来调用ControlService函数可以确定状态是否是当前的信息。 

[1] [2] [3] [4] [5] [6] [7] 下一页 




上一篇:WinXP中的无人安装模式

下一篇:Win2000 入侵工具集v1.0

相关文章:
·解决与HTTP 500 – 内部服务器错误错误信息有关的问题
·何谓HTTP 500内部服务器错误
·代理服务器使用原理与选购细则
·如何卸载netware客户服务
·各位网友能不能告诉我个速度快点的电信HTTP代理服务器?
·18个优秀的在线图片编辑服务网站
·如何设置认证SMTP邮件服务器
·电脑自动关闭文字高级服务
·WIN2003服务器安全配置终极技巧
·服务器常见故障的诊断与解决
相关软件:
·腾讯企业QQ 服务器端 V 3.0.3
·勤哲Excel勤哲Excel服务器2007企业版V7.1.2
·架设自己的QQ服务器
·WinKawaks1.54 中文版全集
·让别人的木马为我们服务
·猫岛FLV智能视频转换服务器 V1.11M
·CMD下架设Web服务
·勤哲Excel服务器2007企业版客户端V7.12
·教你建一台属于自已PHP个人网站服务器
·asp.net服务器控件与组件开发

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot