1. 程式人生 > >徹底卸載Windows Service

徹底卸載Windows Service

system div debug tco uri play 3.3 監控 ima

前言,我使用Quartz.net + quartz.config + quartz_jobs.xml 寫了個Windows Service,使用如下bat腳本執行服務的安裝,啟動,暫停,卸載

@echo off
:菜單
cls
echo ============================================
echo                  BI數據抓取服務菜單
echo 1.安裝     2.啟動  3.停止        4.卸載
set /p 選擇=請進入命令:
if %選擇%==1 goto 安裝
if %選擇%==2 goto 啟動
if %選擇%==3 goto 停止
if %選擇%==4 goto 卸載
:安裝
echo 正在安裝BI數據抓取服務...
sc create BICrawlService start= auto binPath= E:\XX\XXX\BIJobSchedule\BIJobSchedule\bin\Debug\BIJobSchedule.exe DisplayName= BI數據抓取服務
pause
goto 菜單
:啟動
echo 正在啟動BI數據抓取服務...
net start BICrawlService
pause
goto 菜單
:停止
echo 正在停止BI數據抓取服務...
net stop BICrawlService
pause
goto 菜單
:卸載
echo 正在卸載BI數據抓取服務...
sc delete BICrawlService
pause
goto 菜單

安裝,啟動,都成功,而且服務正常運行,但是當我直接選擇卸載服務後, 發現Service仍在服務列表內,而且監控顯示Service仍在正常運行,由此引出了Windows Service的徹底卸載方法

1. 根據網上資料,顯示如下命令可直接卸載服務

Sc delete [service_name] //很明顯,服務是刪除的,但是列表內還是顯示正常運行,此時對該服務做任何操作都會出現1062,1072之類的錯誤碼
2. 刪除註冊表內容
Cmd下regedit;找到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 找到你的Service服務的名字,然後把整個文件夾刪掉,
但是我這邊沒找到對應的文件夾
3. 查找PID,根據PID強制殺掉進程
3.1. 關掉mmc.exe:

taskkill /F /IM mmc.exe

3.2. 查找服務的PID:

技術分享

技術分享

3.3. 執行kill命令:

taskkill /PID 1104 /f

技術分享

如上,我電腦上的windows 服務,算是徹底清除幹凈了

參考:
http://www.cnblogs.com/Wolfmanlq/p/5872043.html
https://stackoverflow.com/questions/305037/sc-deleteservice-failed-1072#305075

徹底卸載Windows Service