最近由于业务的要求,要将装在客户服务器上的服务端程序设置为开机自启动,百度良久基本得到三种方式:
本地最策略
在运行中输入gpedit.msc就进入了本地组策略编辑器
通过“在用户登录时运行这些程序”能够设置登录时运行的程序,但是服务器重启后不一定会有用户登录,所以这个方案被pass了。
任务计划
打开任务计划程序界面,可以创建任务并设置启动程序的时间,但是我的服务端程序启动时会读取一些配置文件,而用此方法启动的程序读取的目录不是我的程序目录而是c:/windows/system32,而且怎么都无法修改目录(也许是我太low,找不到方法),至于能否开机自启动也就没有测试了,此方法直接pass了。
windows服务
由于普通的程序根本无法在登录前启动,要想在服务器重启后且无人登录的情况下启动程序,就必须将需要启动的程序注册成windows服务,因为只有windows服务才能在登录前启用;按照教程sc create
命令老老实实将我的程序注册成windows服务后,还暗自窃喜这么简单,然而在我启动服务后电脑无情的给了我一个提示:
在服务启动还在读取进度条的期间我的应用可以访问到服务器,到报错提示后就不能访问了,再结合这个错误提示,我猜测应该是服务启动后我的程序没有给系统一个响应,但是我一个普通应用根本无法响应啊,又是各种搜索之后,又发现了instsrv.exe和srvany.exe这个两个小工具,instsrv.exe的作用是将程序注册成windows服务,srvany.exe的作用是将一个普通的程序封装成一个windows服务,就可以正常启动服务了。具体使用方法,有兴趣的同学可以自行百度,这个教程网上还是很多的。为了以后能偷懒,我将注册windows服务和修改注册表等一系列操作都放入以bat文件中,最后附上我的部分bat文件代码,以供参考