如何將批處理文件注冊(cè)成服務(wù),在系統(tǒng)啟動(dòng)的時(shí)候就自動(dòng)調(diào)用startagent.bat腳本,下面是具體的實(shí)現(xiàn)過(guò)程,需要的朋友可以參考下
前兩天完成了將java程序注冊(cè)成win服務(wù),如今本人有一個(gè)java工程起重含有啟動(dòng)腳本startagent.bat.我想要達(dá)到的效果是:當(dāng)系統(tǒng)啟動(dòng)的時(shí)候就自動(dòng)調(diào)用startagent.bat腳本,于是開始網(wǎng)上尋求相關(guān)資料。
1、首先由師兄提示可以使用系統(tǒng)命令sc實(shí)現(xiàn)
sc create 服務(wù)名 binPath= .bat文件所在路徑 start=auto
(注意 =后面有空格,如果文件路徑中含空格則使用引號(hào)引起來(lái))
具體的參數(shù)可以使用sc /?來(lái)查看。
安裝倒是挺順利,管理/服務(wù)中出現(xiàn)了新安裝的服務(wù),但是啟動(dòng)的時(shí)候報(bào)錯(cuò):
"在本地計(jì)算機(jī)無(wú)法啟動(dòng)server服務(wù),錯(cuò)誤5:拒絕訪問(wèn)"
刪除服務(wù)的時(shí)候使用
sc delete 服務(wù)名
報(bào)錯(cuò):"xxx服務(wù)已標(biāo)記為刪除"
重新安裝報(bào)錯(cuò):
"錯(cuò)誤1053:服務(wù)沒(méi)有及時(shí)響應(yīng)啟動(dòng)或控制請(qǐng)求"
嘗試未果,又逢有網(wǎng)友說(shuō)這種方式行不通,要想作為服務(wù)啟動(dòng)。bat文件得符合msdn上規(guī)定的特定格式的。
--------------嘗試新的方案--------------
采用instsrv.exe /srvany.exe
用instsrv.exe /srvany.exe 注冊(cè)windows 服務(wù)方法:
1. 注冊(cè)服務(wù): x:/xxx/instsrv 服務(wù)名 x:/xxx/srvany.exe(注意得使用"/")
-------- 將srvany.exe 注冊(cè)成系統(tǒng)服務(wù)
2. regedit打開注冊(cè)表
3. 進(jìn)入HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/服務(wù)名
4. 右鍵-新建-項(xiàng) 填入 Parameters
5. 打開Parameters,右鍵-新建-字符串值 Application
6. 雙擊Application 填入 應(yīng)用程序的絕對(duì)路徑,如: E:/jboss-4.0.5.GA/bin/starteos.bat
7. 右鍵-新建-字符串值A(chǔ)ppDirectory
8. 雙擊AppDirectory 填入 應(yīng)用程序的工作目錄,如: E:/jboss-4.0.5.GA/bin
----------- 通過(guò)srvany.exe 啟動(dòng)注冊(cè)表中定義的。exe 應(yīng)用
9. 啟動(dòng)服務(wù)。
(注意: 7與8不可或缺)
在windows 服務(wù)管理器中看到定義的服務(wù)…
問(wèn)題時(shí)解決了, 然而出現(xiàn)了奇怪的2幕:
A、 在服務(wù)中啟動(dòng)、關(guān)閉服務(wù)似乎無(wú)效,只有重啟才會(huì)生效
B、 配置文件每次都被還原了?(估計(jì)是源自自己的一次小修改,待查明… … )
最終通過(guò)重建才解決B問(wèn)題的, 為什么呢? 我的修改?… …
刪除一個(gè)自定義的服務(wù)呢?
如果你要卸載一個(gè)本地服務(wù),可以通過(guò)命令行輸入如下命令
sc delete ServiceName
或者在直接修改注冊(cè)表
在 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services 中刪除相應(yīng)的鍵值。
更多信息請(qǐng)查看IT技術(shù)專欄