1. 程式人生 > >Windows Server下把BAT批處理註冊成服務在後臺運行且註銷後能正常運行

Windows Server下把BAT批處理註冊成服務在後臺運行且註銷後能正常運行

sha 方法 pytho 面具 blog overflow 程序 str .cn

批處理有如下特點:

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

Windows Server下把BAT批處理註冊成服務在後臺運行且註銷後能正常運行