Windows服务搭建(C#)

本文详细介绍了如何在C#工程中创建Windows服务,并提供了在安装、卸载、开启、关闭服务过程中遇到的常见问题及其解决方案。重点讨论了使用批处理文件控制服务的安装与卸载,以及在不同情况下如何正确地处理相对路径问题。

创建windows服务流程

1.C#工程中新建windows服务

2.Service1改名-想要的名字

3.在视图中新建安装程序

4.右键serviceInsraller1,选择属性,将ServiceName的值改为ServiceTest,还可以再Description中写上对服务的描述。

5.右键serviceProcessInsraller1,选择属性,将Account的值改为LocalSystem。

(服务包括的函数)

Windows服务并不像一般应用程序那样直接运行,需要其它的东西。这里由几个简单的批处理程序来控制安装,卸载,开始,停止。

Install.bat 这个批处理第一次用遇到了很多问题,改了很久。发现是相对路径居然无效,就是直接用下面这个代码不行。

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\installutil WindowsServiceLog.exe
这个居然会错,就算批处理在Debug调试目录下,后来试了下绝对路径居然又正常了,百思不得其解。想到如果要移植就不能用绝对路径,那么就用代码来获取绝对路径,于是就改成这样了。
@echo off
@echo 安装WindowService中,请等待。。。
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\installutil %~dp0WindowsServiceLog.exe  
@echo 安装成功! 
@echo 正在启动服务。。。
Net Start ServiceTest
sc config ServiceTest Start= auto 
@echo 服务启动成功!
pause 

卸载就简单多了,也是和上面同样的道理。

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u %~dp0WindowsServiceLog.exe
pause

服务的开启和关闭。其实安装服务的时候就用代码开启了。

一直不太清楚sc和Nat命令区别,对服务的开关来说,反正都可以用。

Net Start ServiceTest

Net Stop ServiceTest

sc Start ServiceTest

sc Stop ServiceTest

删除服务

sc delete ServiceTest

查看服务状态

sc query ServiceTest

卸载服务中居然遇到了一个奇怪的问题,“服务已标记删除!” ,没法卸载,没法启动,没法重新安装,我还去了注册表找到这个服务删除结果还是没用。。。结果居然是------》

-----》需要先关闭计算机管理-服务 这个窗口。(撞墙)

控制服务的时候运行*.bat,如果不以管理员身份运行就会出错。为此特别增加了一个对管理员权限的判断,如果不是管理员则提示。下面以安装服务为例,其它类似

 1 @ECHO OFF
 2 fsutil >nul 
 3 if errorlevel 1 (goto error )
 4 @echo 安装WindowService中,请等待。。。
 5 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\installutil %~dp0WindowsServiceLog.exe  
 6 pause
 7 exit
 8 :error
 9 echo 请右键以管理员身份运行此程序!
10 pause
11 exit

(待完成。。)

转载于:https://www.cnblogs.com/Iamsorry/p/4898087.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值