I wonder if there is any possible way to get or create an event for a status changed of a Windows Service.
I know that the ServiceController
class does not have the event, but it has the status. Is there any way that I can listen to an event?
I wonder if there is any possible way to get or create an event for a status changed of a Windows Service.
I know that the ServiceController
class does not have the event, but it has the status. Is there any way that I can listen to an event?
This is exactly what the NotifyServiceStatusChange
function is intended for. The docs say that it:
Enables an application to receive notification when the specified service is created or deleted or when its status changes.
I'm not sure if there's an equivalent event wrapped in managed code, but this one is easy enough to get at using P/Invoke.
However, note that this function is only available in Windows Vista and later. If you need to target earlier versions, you can find a solution in one of the answers to this question.
Using NotifyServiceStatusChange
requires admin rights.
The service controller does have a ServiceController.WaitForStatus which could be set to listen for changes and create events. It's ugly but it doesn't require admin, so it may be useful in some scenarios.
© 2022 - 2024 — McMap. All rights reserved.