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/ ...
随机推荐
- pat甲级1002
1002. A+B for Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue T ...
- U盘安装OSX
1.插入U盘,磁盘工具,格式化U盘为Mac OS X拓展 (日志式): 2.去网站搜索recovery disk assistant,此文件大约1.1M,直接打开使用它制作启动盘,进度条完毕就完成了. ...
- tensorboard入门
Tensorboard tensorboard用以图形化展示我们的代码结构和图形化训练误差等,辅助优化程序 tensorboard实际上是tensorflow机器学习框架下的一个工具,需要先安装ten ...
- 【最小生成树+LCA】Imperial roads
http://codeforces.com/gym/101889 I 先跑一遍最小生成树,把经过的边和答案记录下来 对于每个询问的边,显然如果处于MST中,答案不变 如果不在MST中,假设这条边连上了 ...
- MySQL数据库错误号:2003 - Can't connect to MYSQL server on 'localhost'(10061)
打开Windows+R在里面输入services.msc打开服务 在MySQL服务是右键点击启动,让其状态显为正在运行即可 启动完毕,然后再用命令CMD去连接,或者Navicat都不再报上面的错
- 关于Filter的一点误解
之前一直以为请求达到Web应用时,经过过滤器1,过滤器2……,处理后产生响应再经过过滤器n……过滤器2,过滤器1.这样的阐述似乎没有问题,但我的理解却有问题.比如过滤器1的doFilter方法执行了一 ...
- 使用JsonConfig中的setExcludes方法过滤不需要转换的属性
Hibernate的many-to-one双向关联中,查询many方时会将one方数据顺带着查询,同时one中会有List<Many>,然后又会去查Many中的数据... 周而复始,结果j ...
- Win server 2016 升级 Win server 2019 [测试验证]
. 给win server 2016 挂在 win server 2019 的安装盘 2. 点击setup 直接进行安装操作 选择不下载更新, 然后到达输入序列号的界面 序列号为: WMDGN-G9 ...
- 【Python】Python发展历史
起源 Python的作者,Guido von Rossum,荷兰人.1982年,Guido从阿姆斯特丹大学获得了数学和计算机硕士学位.然而,尽管他算得上是一位数学家,但他更加享受计算机带来的乐趣.用他 ...
- Collections带有的排序方法 传入的元素类型 需是子类或者这个类的实例