Windows Server下把BAT批处理注册成服务在后台运行且注销后能正常运行

批处理有如下特点:

1、登录到当前窗口运行时,如果关闭控制台会连同启动的程序一起关闭。

2、如果是以start /b的形式启动,那么同样也是在控制台关闭后者注销当前窗口也会一起关闭。

3、如果以vbs的形式启动,注销当前用户也会一起关闭。

有如下方式解决:

1、使用【任务计划】去启动批处理,里面有很多个触发点,可以选择【计算机启动时】触发也能达到开机启动的效果,而不用登录桌面。

2、有错误启动Windows Service方式,用【sc】命令注册服务,然后以cmd.exe的形式去启动(C:WindowsSystem32cmd.exe /C C:Python34Scriptsshadowsocksshadowsocks un.bat),但这种形式表面上是启动不成功服务,但是实质上在进程上已经有了python.exe这个进程存在,所以是成功启动的;而且这种形式是不能停止或重启这个服务。

3、使用【Bat_To_Exe_Converter】这个软件将bat转换成exe程序,然后用【sc】或者【srvinstw.exe】把这个exe注册进服务,如果是python的程序同样会面临第2步的问题,但是如果你启动的是别的,很可能会成功;还有一个问题,这个转换的程序在执行转换后的exe时会在临时文件夹下产生一个【b2e.exe】的进程,我猜测这个是执行bat的基础,但是里面具体干了什么不得而知,如果想使用,请慎重!

下载地址:http://www.jb51.net/article/20270.htm

4、终极解决方法,使用nssm程序

ssm install <servicename>

然后在服务列表即可启动,这个程序对bat注册成服务非常不错,比上面三种方式靠谱。

参考:

http://stackoverflow.com/questions/415409/run-batch-file-as-a-windows-service

原文地址:https://www.cnblogs.com/EasonJim/p/7533301.html