C# VS 2010创建、安装、调试 Windows服务(Windows Service)

转载 2015年07月06日 16:59:46

1.创建 windows服务 项目
  文件 -> 新建项目 -> 已安装的模板 -> Visual C# -> windows ,在右侧窗口选择"windows 服务"

2.系统已经为我们建立了一个 Service1.cs 组件,测试时我们就用它了.
 如果要新件的话,右键项目 -> 添加 -> 新建项 -> windows 服务。

3.在 Service1.cs 上 ,按 F7 (右键查看代码),打开代码页。加入我们测试用的代码。
  注意:下面的几个方法中的 str 变量,为了我们一会儿调试时设置断点用的!

复制代码
 1  using System;
 2  using System.Diagnostics;
 3  using System.ServiceProcess;
 4 
 5  namespace WindowsService1
 6  {
 7   public partial class Service1 : ServiceBase
 8   {
 9    public Service1()
10    {
11     InitializeComponent();
12     InitService();
13    }
14 
15    /// <summary>
16    /// 初始化服务参数
17    /// </summary>
18    private void InitService()
19    {
20     base.AutoLog = false;
21     base.CanShutdown = true;
22     base.CanStop = true;
23     base.CanPauseAndContinue = true;
24     base.ServiceName = "Service1";  //这个名字很重要,设置不一致会产生 1083 错误哦(在文章最后会说到这个问题)!
25    }
26    protected override void OnStart(string[] args)
27    {
28     string str ="服务开启";
29    }
30 
31    protected override void OnStop()
32    {
33     string str ="服务停止";
34    }
35    protected override void OnContinue()
36    {
37     string str ="服务继续运行";
38     base.OnContinue();
39    }
40    protected override void OnPause()
41    {
42     string str ="服务暂停";
43     base.OnPause();
44    }
45   }
46  }
复制代码

 

4.建立服务的“安装程序”
4.1 双击”Service1.cs“,打开 Service1.cs 的视图设计器
4.2 在视图设计器中任意位置右键,选择”添加安装程序“ 
4.3 这时项目跟目下将出现一个 ProjectInstaller.cs 的组件
    (如果是第一次添加”安装程序“的话)
4.4 双击 ProjectInstaller.cs 打开 ProjectInstaller  的视图设计器
4.5 找到 serviceInstaller1 组件,选中后按 F4 键,设置组件属性。
  Description=“测试服务1”;
  DisplayName=“Service1”;
  ServiceName=“Service1”;//这个值必须和 WindowsService1.InitService() 方法下设置的 base.ServiceName 属性一至。
  StartType 为服务运行类型,根据你的需要设置即可。(Manual:手动启动,AutoMatic 为自动启动)
4.6 找到 serviceProcessInstaller1 组件,选中后按 F4 键,设置组件属性。
  Account=“LocalSystem”; //设置为其他的属性在开启服务时,会提示输入用户名和密码
4.7 这样就完成了一个服务的所有准备,下面就是安装和测试工作。

5.生成组件
 右键项目,选择“生成”。

6.安装组件
6.1 使用 InstallUtil.exe 工具注册组件服务,文件位置在不同版本的 framework 中。我用的是 4.0 所以在一下位置
 C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe
6.2 打开生成目录,如果生成成功会有一个 WindowsService1.exe 文件
6.3 在生成目录根目录下新加两个 bat(批处理文件),用于安装和卸载服务
  新建一个文本文件,打开文件加入以下两行命令
  C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe D:\WindowsService1.exe
  pause

  保存后关闭文本文件,之后将其重命名为“安装服务.bat”文件,注意要修改后缀名为 .bat!

  再新建一个文本文件,打开文件加入以下两行命令
  C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /u D:\WindowsService1.exe
  pause
  保存后关闭文本文件,之后将其重命名为“卸载服务.bat”文件,注意要修改后缀名为 .bat!
6.4 “安装服务.bat”文件,安装windows 服务

7.安装成功后需要手动开启服务,因为我们刚设置 serviceInstaller1.StartType 为 Manual
 打开windows 服务管理器,找到名为 Service1 的服务,右键属性。点击【启动】按钮

8.windows 调试
8.1 回到开发环境,选择调试->附加到进程,勾选”显示所有用户进程“
8.2 找到 WindowsService1.exe 进程(如果没有点击下刷新按钮),选中后点击“附加到进程”按钮。
8.3 选中 Service1.cs 文件,后按 F7 打开代码视图
8.4 在所有 str 变量上添加调试断点
8.5 回到windows服务管理器,找 Service1 服务并选中它,在左侧有一个“暂停”按钮。点击一下
  这时,OnPause 方法下的断点命中!OK 达到了调试的目的了

9.如果想一次安装多个服务,需要按照 2~5 的步骤多添加几个服务就好了!
 
--------------------------------------------------------------------------------------
问题及解决方案
注册成功后,启动 Windows服务 时遇到错误:1083 的解决办法
1.查看 Main() 方法中是否启动了指定的服务

复制代码
1  ServiceBase[] ServicesToRun;
2  ServicesToRun = new ServiceBase[]
3  {
4   new Service1(),
5   new Service2() //如果建立多个服务需要添加这段代码
6  };
7  ServiceBase.Run(ServicesToRun);
复制代码

 


2.确保 ProjectInstaller.cs 视图设计器中的 serviceInstaller1 组件的 ServiceName 属性
  与 Service1.cs 组件的 ServiceName 属性一致

标签: windowService

vs2008 windows服务(C#) 开发与安装

写在前面,本文参考多处网上文章及自己的体会心得 下面说一下步骤 1. 新建一个项目 2. 从一个可用的项目模板列表当中选择Windows服务 3. 设计器会以设计模式打开 4. 从工具箱...
  • u012252959
  • u012252959
  • 2015年09月15日 13:20
  • 484

vs2013创建、安装、调试Windows Service程序

Windows服务以服务的形式运行,有些情况下非常有用。用VS2013创建windows服务的过程如下: 创建服务。 1、文件-》新建-》项目-》windows桌面-》windows服务,修改你要的项...
  • wangshaner1
  • wangshaner1
  • 2015年07月10日 14:49
  • 2582

VS中调试Windows服务

目前项目中需要在客户服务器安装一个程序,让我们的服务器可以调用几个客户的存储过程。 我想做一个exe文件,让用户安装就好,安装过后程序不在前台启动。 度娘教我原来要用windows服务,但是过程中...
  • wanda39kela
  • wanda39kela
  • 2015年06月01日 15:55
  • 5185

C#创建Windows服务与安装

Windows服务与安装
  • xiaoguidangjiajia
  • xiaoguidangjiajia
  • 2016年08月30日 17:26
  • 1437

VS调试windows服务

啊、
  • XuWei_XuWei
  • XuWei_XuWei
  • 2014年01月29日 17:14
  • 4478

C#创建、安装一个Windows服务

关于WIndows服务的介绍,之前写过一篇:http://blog.csdn.net/yysyangyangyangshan/article/details/7295739。可能这里对如何写一个服务不...
  • yysyangyangyangshan
  • yysyangyangyangshan
  • 2013年08月29日 14:38
  • 44648

vs创建window service以及删除服务的方法

1.首先在visual studio中创建window service项目 2.在此处我选择的是.net framework4.0。点击确定 3.创建完成后,会在service2.cs中形成3个方...
  • u012517019
  • u012517019
  • 2017年07月02日 17:44
  • 407

c# Windows 服务程序编写与调试

Windows服务:Microsoft Windows 服务,使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不...
  • xgf415
  • xgf415
  • 2016年12月21日 16:47
  • 3686

VS2012下开发Windows服务

一、 VS2012下开发Windows服务 1、 打开VS2012,新建项目,选择Windows服务,此处我以开发一个定时自动发送邮件的服务来做介绍,如下图:   2、 创建好后,编译器会自动创建一...
  • huangcailian
  • huangcailian
  • 2014年12月29日 13:29
  • 2590

vs2008下windows服务的创建、安装以及调试

http://blog.sina.com.cn/s/blog_4b46937b0101pbxz.html 1、新建windows服务。 2、主要文件UpdateFileWinSer...
  • plean
  • plean
  • 2013年12月17日 17:08
  • 721
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C# VS 2010创建、安装、调试 Windows服务(Windows Service)
举报原因:
原因补充:

(最多只允许输入30个字)