windows 服务开发教程
来源:广州中睿信息技术有限公司官网
发布时间:2012/10/21 23:25:16 编辑:itlead 阅读 1546
一、window服务是什么当你单击“开始”,执行“services.msc”命令。就会看见如下窗口。它显示的是当前操作系统中系统自带的服务或者第三方软件安装的服务。服务的状态有名称、描述、启动状态、

  一、 window服务是什么

         1.jpg

  当你单击“开始”,执行“services.msc”命令。就会看见如下窗口。它显示的是当前操作系统中系统自带的服务或者第三方软件安装的服务。服务的状态有名称、描述、启动状态、启动类型等等。你也可以在此窗体中管理相关服务,注意谨慎操作,防止系统错误或软件故障。

  在此,为了让大家对后面使用的代码项目有个整体了解。整个专案有如下项目:

  1、ServerForm: 一个WinForm程序,为window服务MyService测试而调用(永远只弹出一个,除非之前弹出的ServerForm的关闭)。

  2、CreateWSSetup:一个Console程序,为window服务MyService

  生成安装和卸载脚本而使用。并且在服务安装包MyServiceSetup中调用。传入参数install标识安装和启动服务,unstall表示停止和卸载服务。

  3、MyService: 我们今天的重点,一个Window服务程序。

  4、MyServiceSetup:一个Window服务的安装包程序。支持Window服务MyService的安装和启动、停止和卸载。

      2.jpg

 

  二、 Window服务如何开发


  在这里只从C#.NET开发的角度,来简单介绍Window服务的开发。

  1、 新建一个Window服务项目。

   服务.jpg

  2、 编写MyService主要代码

  MyService类继承微软封装的服务基类ServiceBase

  public partial class MyService : ServiceBase

  服务启动OnStart(string[] args),你可以选择是否带传入参数来执行服务。


  // 启动服务

  protected override void OnStart(string[] args)

  {

  // 在此处添加代码以启动服务

  timer.Enabled = true;

  }


  服务停止OnStopt()

  // 停止服务

  protected override void OnStop()

  {

  // 在此处添加代码以执行停止服务所需的关闭操作。

     

  此处为自定义函数,实现定时弹出第三方程序页面。ServerForm是另外一个C#.NET的WinForm程序。我们把它放到

  MyService\Bin\Debug下面。

  // 定时执行

  

  // 控制程序, 单例执行

  System.Diagnostics.Process.Start(AppDomain.CurrentDomain.BaseDirectory + "ServerForm.exe");

    最后,我们看下完整的MyService代码

  

  配置服务的Install组件。当我们写好一个MyService.cs服务后,它还不能直接安装和注册。我们还需要为它配置Install安装组件,具体操作步骤如下:

  步骤1:选中服务MyService.cs,双击鼠标。在VS2008左边区域弹出MyService.cs[设计]*选项卡。

   步骤1.jpg

        步骤2:在“MyService.cs[设计]*选项卡”中,右键鼠标单击选项“添加安装程序”。

   步骤2.jpg

  在执行“添加安装程序”之后,可以看见项目中多了如下文件和组件。

     步骤3:设置安装服务的相关属性

  1、设置组件serviceInstaller1的主要属性

  StartType: AutoMatic自动、Manual手动,Disabled禁止。

  ServiceName: 服务系统标识,

  在cmd命令中执行sr start/stop/query等等命令时候使用,用来唯一标识一个Window服务。

   步骤3.jpg   2、设置组件serviceProcessInstaller1的主要属性

  Accout:账户类型。LocalService基于本机运行服务、NetworkService基于网络运行服务、LocalSystem本地系统服务、User基于用户认证的服务。

  步骤3.2.jpg   3、 设置服务安装后“允许和桌面进行交互”,

  需要在ProjectInstaller.cs中添加如下代码。

  

 

 

 

  

联系我们CONTACT 扫一扫
愿景:成为最专业的软件研发服务领航者
中睿信息技术有限公司 广州•深圳 Tel:020-38931912 务实 Pragmatic
广州:广州市天河区翰景路1号金星大厦18层中睿信息 Fax:020-38931912 专业 Professional
深圳:深圳市福田区车公庙有色金属大厦509~510 Tel:0755-25855012 诚信 Integrity
所有权声明:PMI, PMP, Project Management Professional, PMI-ACP, PMI-PBA和PMBOK是项目管理协会(Project Management Institute, Inc.)的注册标志。
版权所有:广州中睿信息技术有限公司 粤ICP备13082838号-2