http://www.cnblogs.com/knowledgesea/p/3616127.html

http://jingyan.baidu.com/article/fa4125acb71a8628ac709226.html

新建项目-Windows服务

点击确认

Service1.cs默认代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text; namespace WindowsService1
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
} protected override void OnStart(string[] args)
{
} protected override void OnStop()
{
}
}
}

Program.cs 默认代码

using System;
using System.Collections.Generic;
using System.ServiceProcess;
using System.Text; namespace WindowsService1
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
}
}

生成下图

在视图内右键 -添加安装程序

会多出一个

双击文件后右边视图产生两个控件

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

serviceInstaller1的属性

Name:表示控件的名称

 Description:是安装后描述的名字

DisplayName:显示的名称

StartType

表示服务的启动方式。默认为 Manual,指定在重新启动后服务将不会自动启动。Automatic:自动启动。Disabled:禁用

设置 StartType 来指定该服务是在重新启动后自动启动,还是必须由用户手动启动。服务还可以被禁用,指定在启用以前不能被手动或以编程方式启动。

ServiceName:指示系统用于标识此服务的名称。此属性必须与要安装的服务的 ServiceBase.ServiceName 相同

GenerateMemberModifiers

GenerateMember 属性指定 Windows 窗体设计器何时为组件生成成员变量。Modifiers 属性是指定给该成员变量的访问修饰符。如果 GenerateMember 属性的值为 false,则 Modifiers 属性没有效果。

ServiceInstaller 属性详见

https://msdn.microsoft.com/zh-cn/library/system.serviceprocess.serviceinstaller_properties(v=vs.80).aspx

serviceProcessInstaller1的属性

Account:获取或设置运行该服务应用程序时所使用的帐户类型

LocalService:充当本地计算机上非特权用户的帐户,该帐户将匿名凭据提供给所有远程服务器。

NetworkService:提供广泛的本地特权的帐户,该帐户将计算机的凭据提供给所有远程服务器。

LocalSystem:服务控制管理员使用的帐户,它具有本地计算机上的许多权限并作为网络上的计算机。

User:由网络上特定的用户定义的帐户。如果为 ServiceProcessInstaller.Account 成员指定 User,则会使系统在安装服务时提示输入有效的用户名和密码,除非您为 ServiceProcessInstaller 实例的 Username 和 Password 这两个属性设置值。

我选的LocalSystem

ServiceProcessInstaller属性详见

https://msdn.microsoft.com/zh-cn/library/system.serviceprocess.serviceprocessinstaller_properties(v=vs.80).aspx

 

安装卸载windows服务

程序开发完成后编译,会在bin文件夹下找到对应工程名的exe文件

双击运行弹出如下提示:

意思就是不能直接安装此文件

解决办法:

假设把全部文件复制到E盘的WinService文件夹下

用微软的小工具来进行安装,安装.net后一般他会藏在C:\Windows\Microsoft.NET\Framework\v2.0.50727目录下

InstallUtil.exe工具就是用来安装卸载用的,注意使用对应版本的installutil.exe工具

方法一 通过Dos命令安装系统服务

安装

开始 运行输入 cmd 进入dos窗口

进入目录

cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

安装指令

InstallUtil.exe   E:\WinService\iMES.WinService.M2R.exe

卸载指令

InstallUtil.exe  -U  E:\WinService\iMES.WinService.M2R.exe

或者在cmd里直接输入  sc delete 服务名

***注意以上操作必须要已管理员身份运行

方法二、批处理文件

把方法一的安装指令和卸载指令各自复制的text文件,后面再加pause防止运行后窗口立即消失。

在把后缀名改成cmd,放在和要执行的文件在同一个目录下

同样要以右键管理员身份运行(貌似运行一次以后就可以双击了)

安装后点击启动出现提示启动有停止的错误

我出现这个的错误原因是。应该用iMES.WinService.M2R工程bin的下文件安装,由于 iMES.WinService.Thread的工程下引用了iMES.WinService.M2R这个工程下也生成了对应的程序。手误选到了Thread的工程下

如果更改winService配置文件

重新编译解决方案后,会生成.exe.config 后缀的文件,更改里面的数据后重启winService即可

2019年7月重构了程序,从net2.0升级到4.6后,再安装时报这个错,原因是InstallUtil.exe用的还是2.0的

找到 C:\Windows\Microsoft.NET\Framework\v4.0.30319

如果:

不知道为什么再次执行就成功了??

如果win服务启动后,立即关闭

我改成了 C:\Windows\Microsoft.NET\Framework64\v4.0.30319 下的工具,并且程序编译程64位,属性中设置的之前首选平台32位

遇到此错误,用管理员运行

遇到此错误

部署win服务时,经常会出现类似下面的错误,错误模块名称: KERNELBASE.dll。

上次报这个错误是半个月前,由于再次出现了此错误,所以需要重视了,初步怀疑是应用程序无限循环读取config配置文件发生的错误。我部署了n套程序,只有这一套不小心把读取配置文件放到了while的死循环里

配置文件是付给的静态变量,所有放里放外,对程序执行上没有影响,可能是短时间内无限读取文件累积到一定程度引发的此错误。修改一下,继续观察~

(25)C#windows服务的更多相关文章

  1. 利用windows服务+timer或者windows任务计划程序+控制台进行进行每日邮件推送

    1.邮件发送代码 using System.Text; using System.Net; using System.Net.Mail; using System.Reflection; using ...

  2. Quartz.Net在windows服务中的使用

    写在前面 这几天在弄一个项目,需要定时抓取一些数据,当时也想直接用timer算了.因为之前也弄过这样的项目,但是一想,已经用过了,再去使用同一种思路,未免太乏味了.就换了一种新玩法.这里将之前看到的一 ...

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

    系列一: 制作一个可安装.可启动.可停止.可卸载的Windows service(downmoon原创) 系列二:演示一个定期执行的windows服务及调试(windows service)(down ...

  4. Windows服务调用Quartz.net 实现消息调度

    Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲 ...

  5. 我也来学着写写WINDOWS服务-解析xml抓取数据并插入数据库

    项目告一段落,快到一年时间开发了两个系统,一个客户已经在试用,一个进入客户测试阶段,中间突然被项目经理(更喜欢叫他W工)分派一个每隔两小时用windows服务去抓取客户提供的外网xml,解析该xml, ...

  6. SignalR实现B/S系统对windows服务运行状态的监测

    基于SignalR实现B/S系统对windows服务运行状态的监测 通常来讲一个BS项目肯定不止单独的一个BS应用,可能涉及到很多后台服务来支持BS的运行,特别是针对耗时较长的某些任务来说,Windo ...

  7. C#创建Windows服务与安装-图解

    1.创建windows服务项目

  8. C# 制作Windows服务安装包

    C# 制作Windows服务安装包   这两天公司要用C#写一个windows服务,做成安装安装包.制作的过程中遇到了一些问题,写完之后总结一下.如果以后在用到的话可以可以参考一下,而且由于原来没有做 ...

  9. C#编写Windows 服务

    C#编写Windows 服务 Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时 ...

随机推荐

  1. Vbs 测试程序三

    一段被写滥了的VBS代码 值得一提的是感兴趣的同学可以把 chr(13) + chr(13) + chr(13) 改为chr(11) + chr(11) + chr(11) 不赘述 on error ...

  2. 每个套接字地址error

    套接字问题 1 netstat -aon|findstr 5037   2 根据pid,查询占用端口的应用,这里的pid为 8672,查询命令如图 3 杀死对应的PID,taskkill /pid 8 ...

  3. 原始套接字--简易ping程序

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> ...

  4. 利用traceback精确定位错误发生的位置

    背景:在线上代码发生bug时经常只知道错误的原因,但是很难快速的定位到错误发生的位置. 如下图,我们只知道错误. 而在try...except...后添加traceback即可以明确的抛出错误的地址. ...

  5. HDU 1937 F - Finding Seats 枚举

    F - Finding Seats Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  6. CodeForces D. Concatenated Multiples

    http://codeforces.com/contest/1029/problem/D You are given an array aa, consisting of nn positive in ...

  7. CSLM 配置粗解

    CSLM工具(continuous space language model toolkit)用于训练NNLM,支持SRILM.KENLM(默认)语言模型工具,CUDA加速,CSTM统计机器翻译. 本 ...

  8. [AtCoder ARC103A]/\/\/\/

    题目大意:给你一串长度为$n$的序列,要求把这个序列变成$abab\dots abab$的形式,且$a\not =b$,问最少要改几个数字 题解:求出奇偶位上前二多的数字就判断一下就行了 卡点:无 C ...

  9. [NC189A]数字权重

    题目大意:有一个$n$位的数,设第$i$位为$a_i$(最高位为$a_1$).问满足$(\sum\limits_{i=2}^n(a_i-a_{i-1}))==k$的数的个数(不含前导零) 题解:发现$ ...

  10. [poj] 1375 Interval || 圆的切线&和直线的交点

    原题 每组数据给出一些圆(障碍物)的圆心和半径,一个点和一条线段,求站在这个点,能开到的线段的部分的左端点和右端点.没有则输出"No View" 相当于求过该点的圆的两条切线,切线 ...