在一个应用程序中创建多个 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 属性一致

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

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

    用C#创建Windows服务(Windows Services) 学习:  第一步:创建服务框架 创建一个新的 Windows 服务项目,可以从Visual C# 工程中选取 Windows 服务(W ...

  2. C# windows服务:创建Windows服务(Windows Services)的一般步骤

    C#创建Windows服务(Windows Services) Windows服务在Visual Studio 以前的版本中叫NT服务,在VS.net启用了新的名称.用Visual C# 创建Wind ...

  3. .net Windows服务程序和安装程序制作图解 及 VS 2010创建、安装、调试 windows服务(windows service)

    .net Windows服务程序和安装程序制作 最近项目中用到window服务程序,以前没接触过,比较陌生,花了两天的时间学习了下,写了个简单的服务,但在制作安装程序的时候,参照网上很多资料,却都制作 ...

  4. VS创建、安装、调试 windows服务(windows service)

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

  5. windows service 的创建 安装 调试 错误回发

    关于如何快速创建一个windows服务 1.在vs中创建windows服务 名称:你要写的服务名称 位置:创建服务所在的位置 点击确定 2.代码编写 3.添加安装程序 点击添加安装程序出现 分别右击设 ...

  6. VS 2010一步步开发windows服务(windows service)

    基于0起步来创建一个服务,做到简单的记录时间日志功能,其具体招行方法可自行添加. 1.创建服务 2.删除默认服务文件 3.添加自己的服务文件 4.更改启动项目 5. 引用 using System.T ...

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

    最近由于工作需要,写了一些windows服务程序,有一些经验,我现在总结写出来.目前我知道的创建创建Windows服务有3种方式:a.利用.net框架类ServiceBaseb.利用组件Topshel ...

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

    转自:http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html 最近由于工作需要,写了一些windows服务程序,有一些经验,我现在 ...

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

    项目背景 根据客户需求在SharePoint 2010 中创建自定义的ASP.NET Web Service可以分为3种方式(我所知道的).废话少说,下面一一列举: 创建方式 MSDN 官方博客自己的 ...

随机推荐

  1. word vba 1 页面视图

  2. [Angular2Fire] Firebase auth (Google, Github)

    To do auth, first you need to go firebase.console.com to enable the auth methods, for example, enabl ...

  3. hdu3377之简单路径求最值

    Plan Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  4. Android中图形截取的方式介绍

    在Android的应用中,有时候我们想仅仅显示一部分图像,这时候就要求图形截图. 1.随意截取图像的方法,以下我们具体介绍一下android中的重要类--Bitmap public final cla ...

  5. 细说CSS伪类和伪元素

    原文 简书原文:https://www.jianshu.com/p/eae56b7fe7fe 大纲 1.伪元素 2.伪类元素 3.伪元素和伪类元素的区别 4.伪类和伪元素的使用 1.伪元素 伪元素在D ...

  6. Spinlock implementation in ARM architecture

    Spinlock implementation in ARM architecture   SEV and WFE are the main instructions used for impleme ...

  7. 使用Perl批量读取文件最后行

    使用Perl批量读取文件最后行 面对成百上千个文件,有时我们需要查看它的最后行,单个文件打开将耗费大量时间,而通过Perl提取出最后行,将快速的帮助我们处理繁琐的事务. 特性 整个目录完全遍历,自动提 ...

  8. dmalloc用法快速入门

    原文链接 常用内存泄露检测手段有 1 mtrace 2 memwatch 3 mpatrol 4 dmalloc 5 dbgmem 6 valgrind 7 Electric Fence dmallo ...

  9. 驱动程序调试方法之printk——printk的原理与直接使用

    1.基本原理 (1)在UBOOT里设置console=ttySAC0或者console=tty1 这里是设置控制终端,tySAC0 表示串口, tty1 表示lcd(2)内核用printk打印 内核就 ...

  10. 洛谷 P2197 nim游戏

    洛谷 P2197 nim游戏 题目描述 甲,乙两个人玩Nim取石子游戏. nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取 ...