最近项目中需要将一些业务的处理程序改造为windows服务,但是考虑到实际需求,也需要能够直接双击运行这些处理程序。首先第一步想到的就是原来的项目不变,只需要在加一个windows服务的项目就行。但是实际使用中还是比较有风险,可能别人无意中关闭了你的运行程序,或者服务器维护重启之后需要启动大量的exe程序。所以需要将这些处理程序改造成既能以exe的形式双击运行,又能将该程序注册为windows服务开机自动运行。

首先我们的大量的处理程序都是以控制台程序存在,所以这里主要介绍控制台程序改造。在改造的过程中看了很多资料,最终发现了这样的一些方法,我在这里将其总结起来。

在.net的程序中,所有应用的入口是 Program 类的 Main(srting[] args) 函数,它的参数是用来接收启动参数的(详见:《.net控制台程序Program args参数解析》),在这里我对程序进行改造。

新建一个控制台程序,在该项目中添加(右键 > 添加 > 新建项)一个windows服务 MyWidnwosService.cs

在MyWidnwosService中的OnStart()和OnStop()中写入程序逻辑。

然后在Main函数中写入我们的启动逻辑:

 static void Main(string[] args)
{
// 如果有启动参数,并且第一个启动参数是sr,以服务形式运行
if (args.Length > && args[].Equals("sr"))
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new MyWidnwosService()
};
ServiceBase.Run(ServicesToRun);
}
else
{
// 以控制台程序运行,调用程序逻辑
}
}

这样我们就轻易实现了控制台程序和windows服务结合的应用程序了。接下来我们需要的就是将该程序注册为windows服务,这里我们需要用到一个第三方的工具:srvanyui.exe(该软件作者 王晔,地址:http://wangye.org),该软件原理网上非常多,大家自行百度“srvany.exe”。

首先打开srvanyui.exe程序

这里我们会看到很多本机已经存在的服务了,我们点击左上角  图标添加我们的服务,在这里选择自建服务,服务名称、内部标识、服务描述等自己设定,然后选择好程序路径(编译好的exe程序),输入软件的启动参数,上面我们设置的是sr,然后设置号启动方式点击确定就安装好我们的服务了。

srvanyui.zip下载地址:http://pan.baidu.com/s/1pLJ2Rz1

如果无法下载,请发邮件:jw@jiewus.com

.net下将exe改造为既能双击独立运行又能注册为windows服务的更多相关文章

  1. 把应用程序exe 注册成为windows 服务的方法

    由于在Windows 服务器上必须要启动一个软件,提供外网访问内网的客户端软件,但是由于每次远程服务器之后会注销当前用户,所以客户端软件就会自动退出,那么我在外网的系统就不能支持访问了. 解决方案:将 ...

  2. Nginx的使用(三)把nginx和php-cgi.exe注册成windows服务

    1.创建windows服务用到一个小工具WinSW:https://github.com/kohsuke/winsw/releases(下载 .exe 文件即可,根据系统选择,Win 10 选择 .N ...

  3. Windows 下tomcat安装及将多个tomcat注册为Windows服务

    一.应用场景 虽然Windows在当下已经不再是我们作为服务器操作系统平台的首选,但是还是有一些开发商或者项目整体需求的限制必须运行在Windows系统平台之下.为了避免多个应用部署在同一个tomca ...

  4. 使用NSSM把任意exe程序注册成Windows服务

    1.登录NSSM官网下载最新版本: http://www.nssm.cc/download 2.解压之后可以看到win32和win64位的nssm.exe,根据自己的电脑选择使用 3.拷贝一份nssm ...

  5. 将bat文件或exe程序注册成windows服务

    命令行使用sc命令.关于sc命令的详解,请自行查看帮助(sc /?),在此只简单提及如何加入系统服务功能.加入服务:sc create ServiceName binPath= 路径 start= a ...

  6. 将可执行exe文件注册成windows服务

    要把应用程序添加为服务,你需要两个小软件:Instsrv.exe和Srvany.exe.Instsrv.exe可以给系统安装和删除服务,Srvany.exe可以让程序以服务的方式运行.这两个软件都包含 ...

  7. 把exe注册为windows服务

    1.需要工具 Instsrv.exe(可以给系统安装和删除服务) Srvany.exe(可以让程序以服务的方式运行) 2.运行cmd,输入注册服务命令 "instsrv.exe完整路径&qu ...

  8. 如何将exe注册为windows服务,直接从后台运行

    方法一:使用windows自带的命令sc 使用sc create 方法创建. 如:注册服务 sc create ResharperServices binpath= D:\ResharperServi ...

  9. [转]C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe

    写在前面 原文地址:C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe 这篇文章躺在我的收藏夹中有很长一段时间了,今天闲着没事,就自己动手实践了一下.感觉 ...

随机推荐

  1. Delphi并行库System.Threading 之ITask 1

    不知什么时候,也许是XE8,也许是XE8之前 .Delphi里面多了个System.Threading的并行库. 虽然己经有非常棒的第三方并行库QWorker,但我还是更喜欢官方的东西. 下面是一段使 ...

  2. hadoop生态搭建(3节点)-15.Nginx_Keepalived_Tomcat配置

    # Nginx+Tomcat搭建高可用服务器名称 预装软件 IP地址Nginx服务器 Nginx1 192.168.6.131Nginx服务器 Nginx2 192.168.6.132 # ===== ...

  3. 第一篇:百问网ubuntu安装注意事项和部分配置

    目录 一.开启虚拟化技术 二.ubuntu部分设置 一.开启虚拟化技术 ​ 64位机,需要使用cpu-z.SecurAble软件来检查:CPU是否支持VT虚拟化技术 cpu-z使用(软件) 第一步:以 ...

  4. linux 下安装 Cisco Packet Tracer 7.11以及一些注意

    https://blog.csdn.net/qq_35882901/article/details/77652571 https://linux.cn/article-5576-1.html 开启登录 ...

  5. Scala学习笔记(二)——Scala基础

    1. 常用数据类型 Scala与Java有着相同的常用数据类型: Byte.Short.Int.Long.Float.Double.Chat.Boolean(只有包装类型,无原始类型) Scala继承 ...

  6. FPGA软硬协同设计学习笔记及基础知识(一)

    一.FPGA软件硬件协同定义: 软件:一般以软件语言来描述,类似ARM处理器的嵌入式设计.硬件定义如FPGA,里面资源有限但可重配置性有许多优点,新的有动态可充配置技术. Xilinx开发了部分动态可 ...

  7. C# 面试题 (二)

    1. 什么是C#? C#是微软公司发布的一种面向对象的.运行于.NET Framework之上的高级程序设计语言.C#是一种安全的.稳定的.简单的.优雅的,由C和C++衍生出来的面向对象的编程语言. ...

  8. 成都Uber优步司机奖励政策(3月1日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  9. Android stdio build.gradle buildscript 里面的repositories 和allprojects里面 repositories 的区别

    第一段 buildscript 里面的 repositories 表示只有编译工具才会用这个仓库. 比如 buildscript 里面的 dependencies classpath 'com.and ...

  10. java.lang.RuntimeException: HRegionServer Aborted

    java.lang.RuntimeException: HRegionServer Aborted 当我们启动hbase集群的时候,刚启动时每个节点上的进程都显示正常,过一会其他两个节点上的HRegi ...