- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows 服务编写原理及探讨
1
Windows 服务编写原理及探讨
有那么一类应用程序,是能够为各种用户(包括本地用户和远程用户)所用的,拥有用户授权级进行
管理的能力,并且不论用户是否物理的与正在运行该应用程序的计算机相连都能正常执行,这就是所谓的
服务了。
(一)服务的基础知识
Question 1. 什么是服务?它的特征是什么?
在 NT/2000 中,服务是一类受到操作系统优待的程序。一个服务首先是一个 Win32 可执行程序,如
果要写一个功能完备且强大的服务,需要熟悉动态连接库(Dlls)、结构异常处理、内存映射文件、虚拟内存、
设备 I/O、线程及其同步、Unicode 以及其他的由 WinAPI 函数提供的应用接口。当然本文讨论的只是建立
一个可以安装、运行、启动、停止的没有任何其他功能的服务,所以无需上述知识仍可以继续看下去,我
会在过程中将理解本文所需要的知识逐一讲解。
第二要知道的是一个服务决不需要用户界面。大多数的服务将运行在那些被锁在某些黑暗的,冬暖夏
凉的小屋子里的强大的服务器上面,即使有用户界面一般也没有人可以看到。如果服务提供任何用户界面
如消息框,那么用户错过这些消息的可能性就极高了,所以服务程序通常以控制台程序的形式被编写,进
入点函数是 main()而不是 WinMain()。
也许有人有疑问:没有用户界面的话,要怎样设置、管理一个服务?怎样开始、停止它?服务如何发
出警告或错误信息、如何报告关于它的执行情况的统计数据?这些问题的答案就是服务能够被远程管理,
Windows NT/2000 提供了大量的管理工具,这些工具允许通过网络上的其它计算机对某台机器上面的服务
进行管理。比如 Windows 2000 里面的“控制台”程序(mmc.exe),用它添加“管理单元”就可以管理本
机或其他机器上的服务。
1
Windows 服务编写原理及探讨
2
Question 2. 服务的安全性…
想要写一个服务,就必须熟悉 Win NT/2000 的安全机制,在上述操作系统之中,所有安全都是基于用
户的。换句话说——进程、线程、文件、注册表键、信号、事件等等等等都属于一个用户。当一个进程被
产生的时候,它都是执行在一个用户的上下文(context),这个用户帐号可能在本机,也可能在网络中的其
他机器上,或者是在一个特殊的账号:System Account——即系统帐号的上下文
如果一个进程正在一个用户帐号下执行,那么这个进程就同时拥有这个用户所能拥有的一切访问权限,
不论是在本机还是网络。系统帐号则是一个特殊的账号,它用来标识系统本身,而且运行在这个帐号下的
任何进程都拥有系统上的所有访问权限,但是系统帐号不能在域上使用,无法访问网络资源…
服务也是 Win32 可执行程序,它也需要执行在一个 context,通常服务都是在系统账号下运行,但是
也可以根据情况选择让它运行在一个用户账号下,也就会因此获得相应的访问资源的权限。
Question 3. 服务的三个组成部分
一个服务由三部分组成,第一部分是 Service Control Manager(SCM)。每个 Windows NT/2000 系统
都有一个 SCM,SCM 存在于 Service.exe 中,在 Windows 启动的时候会自动运行,伴随着操作系统的启
动和关闭而产生和终止。这个进程以系统特权运行,并且提供一个统一的、安全的手段去控制服务。它其
实是一个 RPC Server,因此我们可以远程安装和管理服务,不过这不在本文讨论的范围之内。SCM 包含
一个储存着已安装的服务和驱动程序的信息的数据库,通过 SCM 可以统一的、安全的管理这些信息,因
此一个服务程序的安装过程就是将自身的信息写入这个数据库。
第二部分就是服务本身。一个服务拥有能从 SCM 收到信号和命令所必需的的特殊代码,并且能够在
2
Windows 服务编写原理及探讨
3
处理后将它的状态回传给 SCM。
第三部分也就是最后一部分,是一个 Service Control Dispatcher(SCP)。它是一个拥有用户界面,允
许用户开始、停止、暂停、继续,并且控制一个或多个安装在计算机上服务的 Win32 应用程序。SCP 的作
用是与 SCM 通讯,Windows 2000 管理工具中的“服务”就是一个典型的 SCP。
在这三个组成部分中,用户最可能去写服务本身,同时也可能不得不写一个与其伴随的客户端程序作
为一个 SCP 去和 SCM 通讯,本文只讨论去设计和实现一个服务,关于如何去实现一个 SCP 则在以后的
其它文章中介绍。
Question 4. 怎样开始设计服务
还记得前面我提到服务程序的入口点函数一般都是 main()吗?一个服务拥有很
您可能关注的文档
最近下载
- 肉类食材供货服务方案.docx VIP
- 学习贯彻党的二十届三中全会精神练习试题.doc VIP
- 中国地质大学(北京)《弹性动力学》2021-2022学年第一学期期末试卷.doc VIP
- 企业财务管理制度范本doc.doc
- 食材分拣、包装、运输、验收、售后整体配送服务方案.docx VIP
- 肌肉骨骼康复学试卷及答案.docx VIP
- 大连东软信息学院《高等数学(D)》2025 - 2026学年第一学期期末试卷.docx VIP
- DB50_T 938-2019 铜梁龙舞规范.docx VIP
- Rexroth NYCe4000多轴运动控制系统MCU模块NY4114使用手册.pdf VIP
- 学校食堂食材配送服务方案(肉类、粮油米面、蔬菜水果类).docx VIP
原创力文档


文档评论(0)