Windows下用C++编写服务程序

            Windows下用C++编写NT Service程序
前言:
    由于公司的需求,需要编写一个NT服务程序的基类.主要用于更方便的编写自己的NT服务程序.join经过几天的google,总算完全把NT服务程序的编写方法搞定了.

NT服务程序介绍:
    在windows下打开  控制面板->>管理->>服务 可以看到当前系统中安装的一些服务,每一个服务都连接一个exe的可执行文件.在服务管理中可以对这些服务进行停止,运行和暂停的操作.
    NT服务程序有以下特点:
    1.没有窗口,一般只运行在控制台下.
    2.可在用户登录前进行启动.

简单NT服务程序写方法:
    1.新建一个控制台应用程序,在main 函数中调用StartServiceCtrlDispatcher注册一个service mian回调函数.注册成功后,程序进入到这个service main函数.并且退出时不经过控制台的main函数而直接退出.
    2.在service main 函数中用 RegisterServiceCtrlHandler 注册给系统调用的control回调函数和你需要执行的代码.
    3.运行dos命令 "SC Create ServiceName = pathexe", 其中ServiceName是你指定的服务名.pathexe是你指定的要连接的可执行文件的绝对路径(就是编译后的exe文件).
    4.在服务管理中启动服务.
    以上就是简单的C语言NT服务的编写方法.更详细的介绍请在google搜索"用C语言编写Windows服务程序的五个步骤".这篇文章详细介绍了如何用c语言写windows服务程序,并且比较简单.

C++编写服务程序:
    由于考虑到代码的复用性和面向对象的方法,所以我实现了一个CX_NTService基类.
    本类有如下特点:
    1.可以不用了解windows服务程序的编写步骤.
    2.可以更专心的去实现想要系统运行的服务.
    3.复用性(面向对象最基本的特性)    

CX_NTService 类的主要接口介绍

int RegisterService(TCHAR* ServiceName);
     这个函数是本类的一个主要入口函数.它有两个功能:1.添加一个服务到系统中.2.注册serviemain函数到系统中.这两个功能不是同时运行的,当程序第一次运行时添加一个服务到系统中.以后运行则注册servicemain函数到系统中去.
    由于windows 服务程序只能从服务控制管理器中去启动的这种特殊性,所以成功添加服务后直接返回到mian函数退出程序.
    当用户从服务控制管理启动程序.成功调用StartServiceCtrlDispatcher函数后,此时程序进入到servicemain中,并且与main函数脱离关系,退出时也不会返回但main函数中.  

virtual int Run() = 0;
    纯虚函数,用户关键代码函数,所有继承此类的子类必须改写这个函数.

 

下面是程序源代码的下载地址:

 

http://download.csdn.net/source/3228508

 

                                                                by:Join

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值