教你如何建立windows服务程序

教你如何建立windows服务程序

ID:9954722

大小:58.00 KB

页数:6页

时间:2018-05-16

教你如何建立windows服务程序_第1页
教你如何建立windows服务程序_第2页
教你如何建立windows服务程序_第3页
教你如何建立windows服务程序_第4页
教你如何建立windows服务程序_第5页
资源描述:

《教你如何建立windows服务程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、windowsNT与Windows9x有一个非常重要的区别,即WindowsNT提供了很多功能强大的Service(服务)。这些Service可以随着NT的启动而自启动,也可以让用户通过控制面板启动,还可以被Win32应用程序起停。甚至在没有用户登录系统的情况下,这些Service也能执行。许多FTP、WWW服务器和数据库就是以Service的形式存在于NT上,从而实现了无人值守。就连最新版的“黑客”程序BackOrifice2000也是以Service形式在NT上藏身的。由于Service的编程较复杂,许多开发者

2、想开发自己的Service但往往都望而却步。鉴于此,下面我们就从头到尾来构造一个全新的Service,读者只要在程序中注明的地方加上自己的代码,那么就可以轻松拥有一个自己的Service。在编写Service之前,先介绍一下几个重要的函数:----1.SC_HANDLEOpenSCManager(LPCTSTRlpMachineName,LPCTSTRlpDatabaseName,DWORDdwDesiredAccess)----OpenSCManager函数打开指定计算机上的servicecontrolmanag

3、erdatabase。其中参数lpMachineName指定计算机名,若为空则指定为本机。LpDatabaseName为指定要打开的servicecontrolmanagerdatabase名,默认为空。dwDesiredAccess指定操作的权限,可以为下面取值之一:----SC_MANAGER_ALL_ACCESS//所有权限----SC_MANAGER_CONNECT//允许连接到servicecontrolmanagerdatabase----SC_MANAGER_CREATE_SERVICE//允许创建服

4、务对象并把它加入database----SC_MANAGER_ENUMERATE_SERVICE//允许枚举database中的Service----SC_MANAGER_LOCK//允许锁住database----SC_MANAGER_QUERY_LOCK_STATUS//允许查询database的封锁信息----函数执行成功则返回一个指向servicecontrolmanagerdatabase的句柄,失败则返回NULL。注意:WINNT通过一个名为servicecontrolmanagerdatabase的数

5、据库来管理所有的Service,因此对Service的任何操作都应打开此数据库。----2.SC_HANDLECreateService(SC_HANDLEhSCManager,LPCTSTRlpServiceName,LPCTSTRlpDisplayName,DWORDdwDesiredAccess,DWORDdwServiceType,DWORDdwStartType,DWORDdwErrorControl,LPCTSTRlpBinaryPathName,LPCTSTRlpLoadOrderGroup,LPDW

6、ORDlpdwTagId,LPCTSTRlpDependencies,LPCTSTRlpServiceStartName,LPCTSTRlpPassword)----CreatService函数产生一个新的SERVICE。其中参数hSCManager为指向servicecontrolmanagerdatabase的句柄,由OpenSCManager返回。LpServiceName为SERVICE的名字,lpDisplayName为Service显示用名,dwDesiredAccess是访问权限,本程序中用SERVI

7、CE_ALL_ACCESS。wServiceType,指明SERVICE类型,本程序中用SERVICE_WIN32_OWN_PROCESS

8、SERVICE_INTERACTIVE_PROCESS。dwStartType为Service启动方式,本程序采用自启动,即dwStartType等于SERVICE_AUTO_START。dwErrorControl说明当Service在启动中出错时采取什么动作,本程序采用SERVICE_ERROR_IGNORE即忽约错误,读者可以改为其他的。LpBinaryPathName指

9、明Service本体程序的路径名。剩下的五个参数一般可设为NULL。如函数调用成功则返回这个新Service的句柄,失败则返回NULL。与此函数对应的是DeleteService(hService),它删除指定的Service。----3.SC_HANDLEOpenService(SC_HANDLEhSCManager,LPCTSTRlpServiceNam

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。