簡體   English   中英

服務阻止Windows啟動

[英]Service blocks windows startup

我們已經自動啟動了服務,在某些情況下,該服務花費大量時間來加載必要的數據,例如10分鍾。 在這段時間內,它可以按預期工作(處理啟動所需的一些巨大數據文件)。 我報告了C ++ SetServiceStatus函數的進展,它工作正常。

這項服務不依賴任何東西,只有一個依賴關系,這也是我們自己的服務。 它在那10分鍾之后啟動,它需要第一個“服務器”服務才能完全運行以接受請求。

我以為Windows會啟動所有其他自動服務(通常在不到10分鍾的時間內),然后開始正常工作,但是在啟動過程中系統完全被阻止(我無法登錄到計算機或ping計算機),直到此一項特定服務已啟動(由SetServiceStatus報告SERVICE_RUNNING)。 當out服務完全啟動時,還將啟動其他缺少的系統服務(網絡,遠程桌面所需的服務,相當隨機)。 這是正常行為嗎? 為什么非依賴進程(如遠程桌面,網絡連接等)正在等待該進程? 我想念什么嗎?

我試圖添加一些依賴關系以推遲服務的啟動,但是最終我得到了許多依賴關系,並且行為仍然以某種方式是隨機的(因為服務的順序是隨機的)。 有時我可以登錄,但是例如“開始”按鈕僅在服務啟動后的10分鍾后才開始工作。 我不確定什么是“最后一項服務”以及要包含在我的依賴列表和某些計算機上的哪些服務可以禁用,並且會帶來新的問題...所以我不喜歡這種解決方案非常。

另一個選項是我們服務的“延遲啟動”選項。 當所有其他自動服務正在運行時,這應該啟動服務。 好吧,這可以正常工作,Windows啟動,計算機運行並響應,我們的服務已啟動,但性能非常差,比平時慢許多倍,看來延遲啟動的服務的優先級低得多。

我目前唯一的解決方案是向系統報告我的服務正在運行(通過SetServiceStatus函數),但是繼續加載(此方法有效,我對其進行了測試)。 但是隨后我們的依存服務出現了問題,因為它需要在第一個服務真正准備好時就啟動。 它可以解決,但我仍然想知道這是怎么可能的,是否可以使用某種方式來保持自動啟動服務的當前狀態,該狀態在真正完全啟動並准備工作時會報告“已啟動”。 感謝您的任何想法。

盡快設置SERVICE_RUNNING,然后在后台繼續處理。 使您的其他服務對正在運行但尚未准備好服務的第一個服務具有彈性。 服務處於啟動狀態的時間越長,我們從不同Windows版本獲得的問題就越多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM