Windows Server下把BAT批處理注冊成服務在后台運行且注銷后能正常運行


批處理有如下特點:

1、登錄到當前窗口運行時,如果關閉控制台會連同啟動的程序一起關閉。

2、如果是以start /b的形式啟動,那么同樣也是在控制台關閉后者注銷當前窗口也會一起關閉。

3、如果以vbs的形式啟動,注銷當前用戶也會一起關閉。

有如下方式解決:

1、使用【任務計划】去啟動批處理,里面有很多個觸發點,可以選擇【計算機啟動時】觸發也能達到開機啟動的效果,而不用登錄桌面。

2、有錯誤啟動Windows Service方式,用【sc】命令注冊服務,然后以cmd.exe的形式去啟動(C:\Windows\System32\cmd.exe /C C:\Python34\Scripts\shadowsocks\shadowsocks\run.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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM