C# VS 2010创建、安装、调试 windows服务(windows service)

在一个应用程序中创建多个 windows 服务的方法和 1083 的解决办法 错误解决方案

--------------------------------------------------------------------------------------

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

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

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

using System;

using System.Diagnostics;

using System.ServiceProcess;

namespace WindowsService1

{

public partial class Service1 : ServiceBase

{

public Service1()

{

InitializeComponent();

InitService();

}

/// <summary>    /// 初始化服务参数    ///
</summary>

private void InitService()

{

base.AutoLog = false;

base.CanShutdown = true;

base.CanStop = true;

base.CanPauseAndContinue = true;

base.ServiceName = "Service1";  //这个名字很重要,设置不一致会产生
1083 错误哦!

}

protected override void OnStart(string[] args)

{     string str ="服务开启";    }

protected override void OnStop()

{     string str ="服务停止";    }

protected override void OnContinue()

{     string str ="服务继续运行";    
base.OnContinue();    }

protected override void OnPause()    {
    string str ="服务暂停";     base.OnPause();
   }   } }

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
WindowsService1.exe   pause   保存后关闭文本文件,之后将其重命名为“安装服务.bat”文件,注意要修改后缀名为
.bat!

再新建一个文本文件,打开文件加入以下两行命令  
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /u
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() 方法中是否启动了指定的服务

ServiceBase[] ServicesToRun;

ServicesToRun = new ServiceBase[]

{   new Service1(),   new Service2() //如果建立多个服务需要添加这段代码 };

ServiceBase.Run(ServicesToRun);

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

时间: 2024-08-12 05:18:32

C# VS 2010创建、安装、调试 windows服务(windows service)的相关文章

windows service 的创建 安装 调试

1.windows service的创建 vs2012 添加项目>windows服务> 2.主要代码 protected override void OnStart(string[] args)         {             System.Timers.Timer timer1 = new System.Timers.Timer();             timer1.Interval = 3000;//间隔时间             timer1.Elapsed += n

用C#创建Windows服务(Windows Services)

学习:  第一步:创建服务框架 创建一个新的 Windows 服务项目,可以从Visual C# 工程中选取 Windows 服务(Windows Service)选项,给工程一个新文件名 ,然后点击 确定.现在项目中有个Service1.cs类: 查看其各属性的含意是: Autolog                 是否自动写入系统的日志文件         CanHandlePowerEvent     服务时候接受电源事件         CanPauseAndContinue    

(转)创建Windows服务(Windows Services)N种方式总结

转自:http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html 最近由于工作需要,写了一些windows服务程序,有一些经验,我现在总结写出来.目前我知道的创建创建Windows服务有3种方式:a.利用.net框架类ServiceBaseb.利用组件Topshelfc.利用小工具instsrv和srvany 下面我利用这3种方式,分别做一个windows服务程序,程序功能就是每隔5秒往程序目录下记录日志: a.利用.net框架类

创建Windows服务(Windows Services)N种方式总结

最近由于工作需要,写了一些windows服务程序,有一些经验,我现在总结写出来.目前我知道的创建创建Windows服务有3种方式:a.利用.net框架类ServiceBaseb.利用组件Topshelfc.利用小工具instsrv和srvany 下面我利用这3种方式,分别做一个windows服务程序,程序功能就是每隔5秒往程序目录下记录日志: a.利用.net框架类ServiceBase 本方式特点:简单,兼容性好 通过继承.net框架类ServiceBase实现 第1步: 新建一个Window

sharepoint 2010 创建自定义的ASP.NET Web Service (上)

项目背景 根据客户需求在SharePoint 2010 中创建自定义的ASP.NET Web Service可以分为3种方式(我所知道的).废话少说,下面一一列举: 创建方式 MSDN 官方博客自己的一个创建ASP.NET Web Service.http://msdn.microsoft.com/zh-cn/library/ms464040(v=office.14).aspx 但是它不推荐这种方式. 通过创建类库项目,使类库项目包装webservice. MSDN推荐使用的方式,通过WCF创建

通过cmd 使用 InstallUtil.exe 命令 操作 windows服务 Windows Service

要安装windows service 首先要找到 InstallUtil.exe,InstallUtil.exe位置在 C:\Windows\Microsoft.NET\Framework\v4.0.30319,用什么版本写的服务,找到对应版本,各个版本不同详见(C:\Windows\Microsoft.NET\Framework\版本) 然后使用命令 安装服务 InstallUtil.exe  服务路径/windowsServiceName.exe 快捷安装:直接找到对应的 installut

使用C#创建及调用WCF完整实例 (Windows服务宿主)

关于WCF的概念.原理.优缺点等,在这里就不多说了,网上很多,可以自行搜索,比我解释的要专业的多. 这里直接说使用Windows 服务(Windows Service)作为宿主如何实现,其它方式不在此次教程之内 文章最后有本例的下载连接,包含源代码.说明教程.编译后文件 实例环境:Windows Server 2008 R2 + VS 2010(C#) 打开 VS 2010,选择 新建项目,选择 ”WCF”|”WCF 服务库 ”,注意这里是”WCF 服务库 ”,不是"WCF 服务应用程序&quo

C# 使用Vici WinService组件来创建Windows服务

Vici WinService 是 是Windows平台下使用C#开发的轻量级用于创建,删除服务的类库,您只需简单的几行代码即可实现多线程异步服务的创建,删除,运行 废话不多说,直接上代码 /****************************************************************** * 创建人:HTL * 创建时间:2015-5-12 14:09:39 * 说明:使用Vici WinService组件创建的Windows服务 * Email:[email

C#制作Windows service服务系列二:演示一个定期执行的windows服务及调试(windows service)

系列一: 制作一个可安装.可启动.可停止.可卸载的Windows service(downmoon原创) 系列二:演示一个定期执行的windows服务及调试(windows service)(downmoon) 系列三: windows service系列三--制作可控制界面的windows service 一.经常有人问起如何让程序定期自动执行? 除了像系统任务和SQL JOB/DTS等都可以满足不同的用户需求外,这里演示了如何做一个简单的windows serivce的框架.主要的功能是按照