2016-12-17 81 views

回答

1

服務控制管理器可以檢測失敗(正確寫入)服務,即服務過程中死亡,而不必返回它SERVICE_STOPPED狀態或用含有一個Win32錯誤代碼SERVICE_STATUS一個SERVICE_STOPPED狀態 - 這是什麼恢復選項卡。

您可以通過ChangeServiceConfig2() + SERVICE_CONFIG_FAILURE_ACTIONS以編程方式訪問該代碼,然後通過SERVICE_FAILURE_ACTIONS進行配置以執行外部過程。

+0

是的,我從msdn [link](https://msdn.microsoft.com/en-us/library/windows/desktop/ms681988(v = vs.85).aspx)獲取了代碼,主要閱讀**大膽的**言論部分 – Priya

0

Windows中沒有內置機制來確定服務終止原因。如果服務無法啓動,SCM將報告錯誤,但是如果服務已啓動 - 任何失敗報告都是它自己的業務。因此,如果服務因內部錯誤而終止,通過任務管理器終止或停止,它將具有相同的狀態Service stopped。如果您嘗試監視的服務沒有錯誤/狀態報告機制,您將無法確定其終止原因。

+0

SERVICE_STATUS結構的dwServiceSpecificExitCode有任何確定服務是否崩潰的信息 – Priya

+0

如果在'dwWin32ExitCode'中設置了'ERROR_SERVICE_SPECIFIC_ERROR',它對於服務器啓動/停止時的錯誤。如果服務成功啓動,然後由於AV而失敗,或者已被用戶殺死,則它沒有任何意義。 – Ari0nhh

相關問題