c# windows server安装启动与卸载
使用installutil.exe安装卸载服务时,由于需要指向服务的全路径,由于生成目录往往不是服务发布的最终目录,很不便利,下面介绍两种方式方便操作:
方式一:
项目中加入install.bat与uninstall.bat文件,设置为始终复制,生成后,在debug\bin下双击install.bat安装启动服务,双击uninstall.bat卸载服务,需要管理员权限时右击以管理员运行。
其中install.bat文件如下:
@echo off
@title 安装windows服务
set curdir=%~dp0
cd /d %curdir%
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe 服务.exe
echo==============================================================
echo=
echo windows服务程序安装
echo=
echo==============================================================
@echo off
net start 服务名
pause
其中的
set curdir=%~dp0
cd /d %curdir%
是通过获取当前bat文件所在的目录,然后cd 到该目录来解决该问题
uninstall.bat文件如下:
@echo off
@title 卸载Windows服务
set curdir=%~dp0
cd /d %curdir%
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u 服务.exe
echo==============================================================
echo=
echo windows服务卸载
echo=
echo==============================================================
@echo off
pause
方式二:
使用windows自带的sc命令安装或卸载服务
正常创建windows server时,main函数如下:
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new myService()//服务
};
ServiceBase.Run(ServicesToRun);//在服务控制管理器 (SCM) 中注册多项服务的可执行文件。
}
}
然后我们改程序入口Main方法,让其在启动时识别是Windows应用程序还是Windows服务,如果是应用程序就执行应用程序的代码,如果是服务就执行MainService的代码,如果是服务,我给了一个"s"参数,如果有这个参数就证明是Windows服务,然后启动MainService,更改后的Main如下:
static void Main(string[] args)
{
//有参数,并且第一个参数时s时,执行服务注册
if (args.Length > && args[] == "s")
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new MyService()//服务
};
ServiceBase.Run(ServicesToRun);
}
else//不含参数就正常运行,这里不含参数运行时,判断是安装还是卸载
{
Console.WriteLine("这是Windows应用程序");
Console.WriteLine("请选择,[1]安装服务 [2]卸载服务 [3]退出");
var rs = int.Parse(Console.ReadLine());
switch (rs)
{
case :
//取当前可执行文件路径,加上"s"参数,证明是从windows服务启动该程序
var path = Process.GetCurrentProcess().MainModule.FileName + " s";
Process.Start("sc", "create myserver binpath= \"" + path + "\" displayName= 我的服务 start= auto");
//其中myserver是安装后的服务名称,displayName为安装后服务的描述,安装指向的服务文件对应的是path
Console.WriteLine("安装成功");
Process.Start("sc","start myserver");
Console.WriteLine("服务启动成功");
Console.Read();
break;
case :
Process.Start("sc", "delete myserver");
Console.WriteLine("卸载成功");
Process.Start("sc", "stop myserver");//有时服务命名删除成功了,但是服务仍然存在,这可能是由于服务正在处于启动状态stop一下就消失了
Console.WriteLine("卸载成功");
Console.Read();
break;
case :
break;
}
}
}
c# windows server安装启动与卸载的更多相关文章
- windows server 安装 mysql – 畅玩Coding
原文:windows server 安装 mysql – 畅玩Coding windows server 安装 mysql 2018年12月11日2018年12月11日 admin 下载:https: ...
- Windows server 安装和配置zabbix agent
1.下载Windows 平台的zabbix agent 先到官网下载zabbix_agentd监控客户端软件安装包(windows操作系统客户端),客户端版本尽量与服务器版本一致,下载地址:http: ...
- Windows Server 安装 BitLocker
打开PowerShell(管理员): C:\> Install-WindowsFeature BitLocker -Restart 安装好后,系统会自动重新启动. Windows Server ...
- windows server 安装之后需要做的操作
一.运行windows update安装更新 提示: 若一直停留在“正在检查更新”,请参考https://answers.microsoft.com/zh-hans/windows/forum/win ...
- windows server安装zabbix-agent
1.准备安装包: 下载链接:https://www.zabbix.com/downloads/3.4.0/zabbix_agents_3.4.0.win.zip 2.在C盘下创建一个zabbix目录, ...
- windows服务安装启动报错误1053:服务没有及时响应启动或控制请求
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0&qu ...
- mongodb在windows下安装启动
mongodb安装 mongodb配置 创建几个文件夹具体如下:数据库路径(\data\db\目录).日志路径(\data\log\目录)和日志文件(mongod.log文件)c:\data\log\ ...
- windows server 2012启动进入cmd解决方法
感谢网友http://sns.yhjy.cn/u/XperiaZ/Blog/t-4748 由于删除了framework 4.5引起的. windows server 2012默认安装framework ...
- windows server 安装phpVirtualBox web服务
这是我在Windows server 2012 下的安装过程 (1) 安装virtualbox (2) 安装IIS和PHP, 参考: https://msdn.microsoft.com/zh-cn/ ...
随机推荐
- Codeforces Round #345 (Div. 1) C. Table Compression dp+并查集
题目链接: http://codeforces.com/problemset/problem/650/C C. Table Compression time limit per test4 secon ...
- 01_Java基础_第1天(Java概述、环境变量、注释、关键字、标识符、常量)_讲义
今日内容介绍 1.Java开发环境搭建 2.HelloWorld案例 3.注释.关键字.标识符 4.数据(数据类型.常量) 01java语言概述 * A: java语言概述 * a: Java是sun ...
- PAT 1085 PAT单位排行 (Microsoft_zzt)
https://pintia.cn/problem-sets/994805260223102976/problems/994805260353126400 每次 PAT 考试结束后,考试中心都会发布一 ...
- 第139天:详解cookie、 sessionStorage 和localStorage
1.cookie:存储在用户本地终端上的数据.有时也用cookies,指某些网站为了辨别用户身份,进行session跟踪而存储在本地终端上的数据,通常经过加密.一般应用最典型的案列就是判断注册用户是否 ...
- 最大流算法-ISAP
引入 最大流算法分为两类,一种是增广路算法,一种是预留推进算法.增广路算法包括时间复杂度\(O(nm^2)\)的EK算法,上界为\(O(n^2m)\)的Dinic算法,以及一些其他的算法.EK算法直接 ...
- [九]SpringBoot 之 定时任务
代码: package me.shijunjie.config; import org.springframework.context.annotation.Configuration; import ...
- Spring Cloud Greenwich 新特性和F升级分享
2019.01.23 期待已久的Spring Cloud Greenwich 发布了release版本,作为我们团队也第一时间把RC版本替换为release,以下为总结,希望对你使用Spring Cl ...
- Linux学习笔记二:Ubuntu安装SSH(Secure Shell)服务
Ubuntu默认是没有安装SSH(Secure Shell)服务,如果想要通过ssh链接到Ubuntu,我们需要手动安装ssh-server. SSH分客户端ssh-client,服务端ssh-ser ...
- 【JavaScript】基本类型和引用类型的值、引用类型
一.前言 接着上一篇继续记笔记 二.内容 动态的属性 var person = new Object(); person.name = "Nicholas&qu ...
- BZOJ1069 [SCOI2007]最大土地面积 【凸包 + 旋转卡壳】
题目链接 BZOJ1069 题解 首先四个点一定在凸包上 我们枚举对角线,剩下两个点分别是两侧最远的点 可以三分,复杂度\(O(n^2logn)\) 可以借鉴旋转卡壳的思想,那两个点随着对角线的一定单 ...