通過bat腳本檢測並安裝windows服務程序


筆者近日需要為公司開發的一個服務程序寫一個安裝和卸載的腳本,安裝服務和卸載服務都很簡單, 但想要自動以管理員權限運行,並且能判斷服務是否已經安裝.

通過百度,參考了別人一些代碼,主要是獲取管理員權限的代碼copy了, 加上自己的嘗試,最終的腳本完成了預想的功能.

現在將正確的代碼附上,僅供參考.

 1 @echo off
 2 title GetAdministratorPower
 3 mode con cols=100 lines=20
 4 color 3f
 5 
 6 :: 開始獲取管理員權限
 7 setlocal
 8 set uac=~uac_permission_tmp_%random%
 9 md "%SystemRoot%\system32\%uac%" 2>nul
10 if %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else (
11     echo set uac = CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs"
12     echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%\%uac%.vbs"
13     echo WScript.Quit >>"%temp%\%uac%.vbs"
14     "%temp%\%uac%.vbs" /f
15     del /f /q "%temp%\%uac%.vbs" & exit )
16 endlocal
17 :: 完成獲取,下面可以開始寫你自己的代碼了
18 
19 
20 echo "install MyService"
21 
22 @echo off  
23 sc query MyService |findstr /i "STATE">nul
24 :: 如果服務已安裝,跳轉至exist標簽;如果未安裝,跳轉至notexist標簽
25 if not errorlevel 1 (goto exist) else goto notexist 
26 
27 :notexist
28 echo "MyService is NOT installed, INSTALLING..."
29 "%~dp0MyService.exe" -i
30 sc start MyService
31 goto end  
32   
33 :exist
34 echo "MyService is Installed, checking..."
35 sc query |find /i "MyService" >nul 2>nul  
36 :: 如果服務已啟動,跳轉至end標簽;如果未啟動,跳轉至stopped標簽
37 if not errorlevel 1 (goto end) else goto stoppped  
38 
39 :stoppped
40 echo "MyService is NOT started, STARTING..."
41 sc start MyService
42 goto end  
43   
44 :end  
45 echo "install finished!"

此腳本已經在winxp, win7 32位和win7 64位上測試過, 其他環境尚未測試.


免責聲明!

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



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