什么是windows服务应用程序
Microsoft Windows服务(即,以前的NT服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不实现任何用户界面。这些功能使服务非常适合在服务器上使用,每当需要使用不会影响在同一台计算机上工作的其他用户的功能时也适用。还可以在不同于登陆用户的特定用户账号或默认计算机账号的安全上下文中运行服务。
创建服务
1.打开vs编辑器新建项目,在Visual C#下面选择windows服务。如下图
自定义服务名称之后点击确定之后就新建好了一个服务工程。如下图
点击单击此处可以切换到代码视图,进入代码界面可以看见如下代码
|
|
可以看到OnStart和OnStop两个基本函数,OnStart是在服务启动时运行,OnStop在服务关闭时运行,这是一个服务程序的基本架构。
注意:OnStart函数里面的程序代码运行时间是有限制的,如果运行过长,安装服务会失败。千万不要出现类似while(true){}这种代码出现在OnStart里面!!!用定时器执行,当然用定时器执行时时间也不能定时过长
创建安装服务程序
在service组件的图形界面鼠标右键点击添加安装程序,vs会自动为我们添加ProjectInstaller.cs以及2个安装的组件。如下图
在serviceInstaller1里面设置相应的属性
可以修改相应的ServiceName,以及StartType
StartType启动属性:
Manual 服务安装后,必须手动启动。
Automatic 每次计算机重新启动时,服务都会自动启动。
Disabled 服务无法启动。
在serviceProcessInstaller1里面设置相应的属性
设置Account相关属性
LocalService 充当本地计算机上非特权用户的帐户,该帐户将匿名凭据提供给所有远程服务器。
LocalSystem 服务控制管理员使用的帐户,它具有本地计算机上的许多权限并作为网络上的计算机。
NetworkService 提供广泛的本地特权的帐户,该帐户将计算机的凭据提供给所有远程服务器。
User 由网络上特定的用户定义的帐户。如果为 ServiceProcessInstaller.Account 成员指定 User,则会使系统在安装服务时提示输入有效的用户名和密码,除非您为 ServiceProcessInstaller 实例的 Username 和 Password 这两个属性设置值。
安装服务
服务安装不像传统的执行exe文件就可以实现安装,要写一个bat安装脚本才能实现安装。类似如下:
删除服务
删除服务跟安装服务一样也要写个bat脚本 类似如下:
注意这两个bat脚本执行以管理员身份执行