五種常見Windows服務啟動問題的排錯方法
在微軟新聞組裡有很多網友諮詢有關Windows服務無法啟動的問題,例如無法啟動“Logical Disk Manager”服務。這類服務出錯的現象往往是五花八門,判斷起來比較麻煩,而且有些問題還無法通過檢視微軟知識庫文章得到解決。所以這裡進行一個簡單的小結,幫助初學者解決常見的服務無法啟動的問題。
特別提醒在閱讀本文的時候,請嚴格按照故障現象進行比對排錯!如果涉及到登錄檔操作,請務必事先備份相關注冊表項,並新建還原點。如果系統無法順利啟動,請按Reset鍵重新開機,然後按F8,在Windows高階啟動選單上選擇“恢復到最近一次的正確配置”選單項,這樣就可以先前的HKLM\SYSTEM\ControlSet00n覆蓋錯誤配置的CurrentControlSet(ControlSet00n中的n由HKLM\SYSTEM\Select的LastKnownGood鍵值指定)。
錯誤2:系統找不到指定的檔案
1.故障現象嘗試在“服務”管理單元視窗手動啟動服務是,系統提示“錯誤2:系統找不到指定的檔案”(Error 2: The system cannot find the file specified.),如圖1所示。
2.原因分析
兩種可能:
(1) 服務的可執行檔案丟失或者被破壞。
3.解決辦法
以“Task Scheduler”服務為例。
如果登錄檔鍵值ImagePath的數值資料被篡改,可以定位以下注冊表項:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Schedule
在右側定位到ImagePath鍵值,將其數值資料修改為正確的值,並重啟系統。
或者藉助sc命令:
sc config Schedule binpath= "%SystemRoot%\System32\svchost.exe -k netsvcs"
如果是可執行檔案丟失或者破壞,請用正確的副本進行替換,並重啟系統。對於本例來說,可執行檔案是svchost,如果該檔案被破壞,系統將無法正常執行。
錯誤1053:服務沒有及時相應啟動或控制請求
1.故障現象
嘗試在“服務”管理單元視窗手動啟動服務時,系統提示“錯誤1053:服務沒有及時相應啟動或控制請求”,如圖3所示。
2.原因分析如圖2所示,可執行檔案的附加命令引數配置有誤,會導致問題。
3.解決辦法
參照上述的方法,用sc命令或者登錄檔編輯器,對附加的命令引數進行排錯。
錯誤1083:配置成在該可執行程式中執行的這個服務不能執行該服務
1.故障現象
嘗試在“服務”管理單元視窗手動啟動服務時,系統提示“錯誤1083:配置成在該可執行程式中執行的這個服務不能執行該服務”,如圖4所示。
2.原因分析
該故障通常在由svchost服務宿主程式所啟動的服務上發生。大家知道Windows XP SP2最多可以啟動七個svchost程式例項(實際上啟動六個程式例項),分別負責啟動一組服務。每個svchost例項所負責啟動的服務由以下注冊表項決定:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost
其下共有七個鍵值:DcomLaunch、HTTPFilter、imgsvc、LocalService、netsvcs、NetworkService、rpcss和termsvcs。每個鍵值都定義了一個或者多個服務,也就是對應每個svchost程式例項所能啟動的一組服務。
本例中“Task Scheduler”服務的可執行程式引數是“svchost.exe -k netsvcs”,對應的svchost程式在啟動該服務之前,會先到HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost下的netsvcs鍵值裡查詢是否有該服務的定義,如果沒有,就會出現該故障現象。
3.解決辦法
很簡單,首先開啟該服務的屬性對話方塊,檢視其可執行程式的命令引數(本例是netsvcs),如圖2所示。
然後進入以下注冊表項:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost
在右側定位到對應的鍵值,本例是netsvcs,在其數值資料裡新增該服務名即可,本例是Schedule,如圖5所示,並重啟系統。
提示 為什麼通常只會啟動六個svchost程式例項?都是TermService服務惹的禍!TermService(Terminal Services)這個服務非常另類,不僅僅出現在DcomLaunch組裡,同時還獨立出現在termsvcs組裡,然而在“服務”管理單元視窗裡,該服務的命令列為“svchost.exe -k DcomLaunch”,也就是說實際上並沒有一個svchost程式例項負責啟動termsvcs服務組!
錯誤126:找不到指定的模組
1.故障現象
嘗試在“服務”管理單元視窗手動啟動服務時,系統提示“錯誤126:找不到指定的模組”(Error 126: The specified module could not be found.),如圖6所示。
該故障通常在由svchost服務宿主程式所啟動的服務上發生。這一類的Windows服務,其實是以dll模組的形式插入某個svchost程式。如果該dll檔案被破壞,或者登錄檔的相關鍵值被篡改,都可能導致問題。
這類服務所對應的Dll檔案,是由HKLM\SYSTEM\CurrentControlSet\Services\ServiceName\Parameters登錄檔項下的ServiceDll鍵值所定義的(此處的ServiceName是指服務名),如果該登錄檔鍵值出錯,或者對應的Dll檔案被破壞,就會導致這個問題。在微軟新聞組裡有不少網友抱怨無法開啟“磁碟管理”視窗,尋根溯源發現是“Logical Disk Manager”服務無法啟動所導致。其中有一個case是系統被木馬PCShare所感染,木馬修改了“Logical Disk Manager”服務的登錄檔鍵值,把HKLM\SYSTEM\CurrentControlSet\Services\dmserver\Parameters登錄檔項下的鍵值ServiceDll的數值資料指向木馬的檔案“%SystemRoot%\System32\drivers\Ybfbqufe.sys”,儘管後來利用防毒軟體殺除木馬,但是防毒軟體未能處理被木馬篡改登錄檔鍵值,導致無法開啟“磁碟管理”。
注意 不要將該故障和“錯誤2:系統找不到指定的檔案”相混淆!
3.解決辦法
對於“Logical Disk Manager”服務的問題,在以下的登錄檔項:
HKLM\SYSTEM\CurrentControlSet\Services\dmserver\Parameters
確保將其下ServiceDll鍵值的數值資料修改為“%SystemRoot%\System32\dmserver.dll”。
如果登錄檔鍵值沒有問題,請確保用正確的檔案副本替換原來的dll檔案,並重啟系統。
錯誤1079:此服務的帳戶不同於執行於同一程式上的其他服務的帳戶
1.故障現象
嘗試在“服務”管理單元視窗手動啟動服務時,系統提示“錯誤1079:此服務的帳戶不同於執行於同一程式上的其他服務的帳戶”,如圖7所示。
2.原因分析
該故障通常在由svchost服務宿主程式所啟動的服務上發生。前面說過Windows XP SP2最多可以啟動七個svchost程式例項,分別負責啟動一組服務。一組服務中的每個服務必須和對應的svchost程式例項執行在同一個啟動帳戶下。例如Alert服務屬於LocalService組的服務,其對應的svchost程式例項執行在Local Service帳戶下,如果錯誤地將Alert服務的啟動帳戶修改為別的帳戶,例如Local System帳戶,就會報錯。
3.解決辦法
首先根據該服務的可執行檔案路徑屬性找到其所屬的服務組,例如Alert服務屬於LocalService的服務組,然後確定同一組的其他服務的啟動帳戶,將其修改為相同的啟動帳戶即可。
服務啟動失敗的原因是多種多樣的,但一個普遍的解決方法,通常是注意系統給出的錯誤提示,以及eventvwr.msc中的系統日誌。
相關文章
- windows 7常見的三種字型問題的解決方法Windows
- python五種除錯或排錯的方法Python除錯
- 客戶服務常見問題及解決方法介紹
- 遠端服務不能啟動問題的解決方法
- Oracle 常見的錯誤問題及解決方法Oracle
- Windows Time服務無法啟動 錯誤5拒絕訪問Windows
- RHCE常見的報錯問題
- 【FAQ】推送服務常見問題及解決方案
- 【FAQ】申請華為運動健康服務授權的4個常見問題及解決方法健康服務
- windows time服務無法啟動的解決方法Windows
- 講一個linux服務啟動報錯問題排查Linux
- 常見的三種HTTP代理服務型別HTTP型別
- 【FAQ】整合分析服務的常見問題及解決方案
- Windows共享資料夾常見問題解決方法Windows
- Windows下常見Oracle服務介紹(zt)WindowsOracle
- Windows 98 常見問題解答(轉)Windows
- As常見問題解決方法
- windows下啟動nacos服務Windows
- 常見網路攻擊的方法與服務
- windows10更新服務遇到問題如何處理_win10更新服務遇到問題需要重啟解決方法WindowsWin10
- 【FAQ】申請運動健康服務驗證環節常見問題及解答健康服務
- laravel schedule run 任務排程在 Windows下的另一種啟動方式LaravelWindows
- 5種常見的 DNS 故障診斷及問題處理方法DNS
- Unity上使用華為AGC服務Demo常見操作及問題UnityGC
- Oracle TNSListener服務啟動後自動停止問題Oracle
- Window中Oracle服務啟動時並不啟動例項的兩種方法Oracle
- MySQL關於事務常見的問題MySql
- mysql併發事務的常見問題MySql
- windows Server 2008常見問題及解決方法WindowsServer
- 前端開發常見問題精選(五)前端
- 微信小程式開發常見問題(五)微信小程式
- 五個常見 PHP 資料庫問題PHP資料庫
- 測試技術常見的十一種問題
- 安卓so包常見報錯問題安卓
- 幾種常見MySQL無法啟動案例MySql
- Redis 常見的效能問題和解決方法Redis
- 常見的五種軟體架構架構
- 在Mac上安裝Windows常見問題MacWindows