windowsservice

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 属性一致

时间: 2024-11-05 13:37:29

windowsservice的相关文章

WindowsService的调试方法

本人转载:http://www.cnblogs.com/xiebin1986/archive/2011/12/15/2288893.html 调试WindowsService,以前用过一个附加到进程的方法,还是挺麻烦的,需要先安装并启动服务,后来找到了一个更好的方法,方法如下: 在Service1.cs(或其他启动类)中添加如下代码: public static void Main(string[] args){ Service1 s = new Service1(); s.OnStart(nu

C# WindowsService安装与卸载

最近在做WinService,总结了一下安装和卸载程序,服务实现内容无法总结了. 安装程序: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Diagnostics; 6 7 namespace InstallWin 8 { 9 class Program 10 { 11 static void Main(string[] ar

WindowsService 安装后报错: 无法启动计算机“.”上的服务 解决方案

问题 : 根据客户的需求做了一个小程序,需要有对WindowsService 安装,卸载,启动,停止的操作. 编译好之后在我的工程内直接Run 没问题.直接在\bin\Debug 点小程序运行,任何操作也没问题. 由于客户要求免安装. 于是我把Debug 文件夹拷到桌面上运行,其他功能都ok,但是涉及到WindowsService的时候启动总是报错:“无法启动计算机“.”上的服务”. 追错思路:于是桌面上程序的安装好了服务之后:1.用bin文件夹下的程序来启动也是这个错:2,用工程直接跑起来启动

WindowsService(Windows服务)开发步骤附Demo

1.打开VS,新建项目,选择Windows服务,然后设置目录及项目名称后点击确定. 2.展开Service1服务文件,编写service1.cs类文件,不是Service1[设计].然后修改OnStart和OnStop方法. 3.编写服务代码,这里不多说,实现简单写日志的功能...看代码,如不明白,看Demo 4.配置WindowsService安装程序.切换到设计视图,单击右键,出现菜单,单击添加安装程序. 5.在安装程序界面,选择**ProcessInstaller1,然后F4查看属性,Ac

WindowsService(Windows服务)开发步骤附Demo 【转】

转http://www.cnblogs.com/moretry/p/4149489.html 1.打开VS,新建项目,选择Windows服务,然后设置目录及项目名称后点击确定. 2.展开Service1服务文件,编写service1.cs类文件,不是Service1[设计].然后修改OnStart和OnStop方法. 3.编写服务代码,这里不多说,实现简单写日志的功能...看代码,如不明白,看Demo 4.配置WindowsService安装程序.切换到设计视图,单击右键,出现菜单,单击添加安装

WindowsService服务安装脚本

安装脚本%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe D:\liuyl\WeiXinService\WindowsService.exenet start WXServicesc config WXService start= auto WXService 是服务的名称 卸载脚本 %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe -u D

WindowsService服务的C#实现

WindowsService(简称服务,下同)是目前做客户端软件后台运行功能的非常好的选择,本文基本解决了服务的创建和编写,代码控制服务的安装.卸载.启动.停止等,为服务传递参数,其他注意事项等 1.服务的创建和编写: ①在Add Project选择Windows Service创建项目,同时添加一个Windows Service类,在这里以IFUploaderService.cs为例 ②在设计器中右键选择Add Installer,如图 ③在生成的ProjectInstaller的设计器中设置

net core quartz调度 warp打包 nssm部署到windowsservice

介绍下一款vue.js实现的基于core2.1 quartz.net调度框架,独立部署不依赖数据库,只需要实现不同业务接口,配置调度时间即可 github:https://github.com/cq-panda/Quartz.NetUI 注意事项: 如果部署在iis下,需要实现对home/index间隔时间进行激活,否则quartz将停止调度 如果使用dotnet Quartz.NET.Web.dll(quartz不会停止调度),需要考虑重启电脑后重新启动 所以: 部署在windowsservi

简单的WindowsService备忘

注意事项: 1. 添加调试代码 入口: 服务: 2. 再服务界面右键添加安装程序 3. 修改安装程序属性(Account) 4. 修改服务安装属性(DelayedAutoStart,ServiceName,StartType) 5. Release编译 6. 使用批处理脚本安装/卸载服务, 放在工程中, 属性->始终复制 安装 @echo off path %path%;%windir%\Microsoft.NET\Framework\v4.0.30319 @echo on @echo 请按任意

WindowsService开发简单入门

一.简介 1) 二.demo建立 1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 三.总结及注意事项