將批處理文件注冊成服務(wù)在系統(tǒng)啟動的時(shí)候自動調(diào)用

字號:


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