通過刪除Windows服務刪除隱藏在Vista系統服務中的病毒。
一、什麼是Windows服務
Windows服務也稱為Windows Service,它是Windows作業系統和Windows網路的基礎,屬於系統核心的一部分,它支援著整個Windows的各種操作。諸如DNS用戶端、列印程式、Windows更新服務、計劃任務、Windows時間服務等服務,它們關係到機器能否正確運行。如果不能適當地管理這些服務,就會影響到機器的正常操作。
一個服務首先是一個Win32可執行程式,或者是是rundll32.exe來運行一個.dll的方式形成的進程。跟普通應用程式不一樣,如開啟 WORD,有一個介面出來,但服務沒有使用者介面。也不能通過直接雙擊運行相應的.exe程式來運行。
二、那Windows又是如何控制一個服務的?
Windows的服務由更上一級的services.exe這個服務來管理,由它來管理,負責進行服務的啟動、停止、運行,暫停等。我們最常用的操作就是通過Windows的服務MMC介面來完成相關操作。
在Windows7系統中,我們點擊開始菜單,在搜尋方塊裡面輸入“服務”,雙擊最上面的第一個結果即可開啟服務管理,在Vista和XP系統中,也可以通過運行 services.msc 開啟服務管理——
三、如何刪除Windows服務
現在的流氓軟體,越來越多把自己註冊為一個服務。一般會把非Windows系統的服務以023的方式列出來,如下面這段:
O23 - 未知 - Service: BKMARKS [提供傳輸協議的資料安全保護機制,有效維護資料轉送中的安全及完整。] - C:WINDOWSSYSTEM32RUNDLL.EXE
O23 - 未知 - Service: ewido anti-spyware 4.0 guard [ewido anti-spyware 4.0 guard] - D:Program Filesewido anti-spyware 4.0guard.exe
O23 - 未知 - Service: KSD2Service [KSD2Service] - C:WINDOWSsystem32SVCH0ST.exe
對於這些流氓軟體,需要刪除相關的.exe檔案,使它不能再運行,或者直接清除這個服務本身,使電腦重啟的時候,它不會再啟動。
刪除的辦法有兩個:
辦法一: 用sc.exe這個Windows命令
點擊開始菜單 -》 所有程式 -》 附件 -》 命令列程式,右鍵菜單中選擇“以管理員方式運行”。
這樣,就用管理員身份開啟了一個命令列程式,輸入 sc 加上參數就可以了,使用辦法很簡單:
sc delete "服務名"(如果服務名中間有空格,就需要前後加引號)
如針對上面的: sc delete KSD2Service
sc 命令的詳解,參看本文下方,Windows7之家/Vista之家已經幫您整理。
方法二:直接進行註冊表編輯(不推薦)
開啟登錄編輯程式,找到下面的索引值:
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services一般服務會以相同的名字在這裡顯示一個主健,直接刪除相關的索引值便可。
四、特殊情況
1、如果服務顯示的是rundll32.exe,並且這個檔案是位於system32目錄下,那麼就不能刪除這個rundll32.exe檔案,它是Windows系統的檔案。這時只要清除相關的服務就可以了。
2、如果一個服務刪除了馬上又自動建立了,說明後台有進程在監視、保護。需要先在進程管理器中殺掉相應的進程,或者啟動後按F8,到Win7/Vista安全模式下刪除。
////// 附錄:SC 命令列程式 參數詳解 ///////
描述:
SC 是用於與服務控制管理員和服務進行通訊的命令列程式。
用法:
sc [command] [service name] ...
選項 的格式為 "ServerName"
鍵入 "sc [command]" 可以獲得有關命令的進一步協助
命令:
query-----------查詢服務的狀態,
或枚舉服務類型的狀態。
queryex---------查詢服務的擴充狀態,
或枚舉服務類型的狀態。
start-----------啟動服務。
pause-----------向服務發送 PAUSE 控制請求。
interrogate-----向服務發送 INTERROGATE 控制請求。
continue--------向服務發送 CONTINUE 控制請求。
stop------------向服務發送 STOP 請求。
config----------更改服務的配置(永久)。
description-----更改服務的描述。
failure---------更改服務失敗時執行的操作。
failureflag-----更改服務的失敗操作標誌。
sidtype---------更改服務的服務 SID 類型。
privs-----------更改服務的要求的權限。
qc--------------查詢服務的配置資訊。
qdescription----查詢服務的描述。
qfailure--------查詢失敗時服務執行的操作。
qfailureflag----查詢服務的失敗操作標誌。
qsidtype--------查詢服務的服務 SID 類型。
qprivs----------查詢服務的要求的權限。
qtriggerinfo----查詢服務的觸發器參數。
qpreferrednode--查詢首選的服務 NUMA 節點。
delete----------(從註冊表)刪除服務。
create----------建立服務(將其添加到註冊表)。
control---------向服務發送控制。
sdshow----------顯示服務的安全性描述元。
sdset-----------設定服務的安全性描述元。
showsid---------顯示相應於假定名稱的 SID 字串。
triggerinfo-----佈建服務的觸發器參數。
preferrednode---設定首選的服務 NUMA 節點。
GetDisplayName--擷取服務的 DisplayName
GetKeyName------擷取服務的 ServiceKeyName。
EnumDepend------枚舉服務的依存關係。
下列命令不要求服務名稱:
sc
boot------------(ok bad) 指示是否將上一次啟動儲存為
最近一次已知的正確啟動配置
Lock------------鎖定服務資料庫
QueryLock-------查詢 SCManager 資料庫的 LockStatus
樣本:
sc start MyService
QUERY 和 QUERYEX 選項:
如果查詢命令帶服務名稱,將返回
該服務的狀態。其他選項不適合這種
情況。如果查詢命令不帶參數或
帶下列選項之一,將枚舉此服務。
type= 要枚舉的服務的類型(driver, service, all)
預設 = service)
state= 要枚舉的服務的狀態 (inactive, all)
(預設 = active)
bufsize= 枚舉緩衝區的大小(以位元組計)
(預設 = 4096)
ri= 開始枚舉的恢複索引號
(預設 = 0)
group= 要枚舉的服務組
(預設 = all groups)
文法樣本
sc query - 枚舉活動服務和驅動程式的狀態
sc query eventlog - 顯示 eventlog 服務的狀態
sc queryex eventlog - 顯示 eventlog 服務的擴充狀態
sc query type= driver - 僅枚舉活動驅動程式
sc query type= service - 僅枚舉 Win32 服務
sc query state= all - 枚舉所有服務和驅動程式
sc query bufsize= 50 - 枚舉緩衝區為 50 位元組
sc query ri= 14 - 枚舉時恢複索引 = 14
sc queryex group= "" - 枚舉不在組內的活動服務
sc query type= interact - 枚舉所有不活動服務
sc query type= driver group= NDIS - 枚舉所有 NDIS 驅動程式