0X0000088F: Why Windows says pause/stop isn't valid for your service
Windows won't let you pause or stop a service because the service doesn't support that control. Here's how to fix it and why it happens.
This error is annoying — you're trying to stop or pause a service and Windows just tells you no. Let's fix it.
The error 0X0000088F (also known as NERR_ServiceCtlNotValid) pops up when you right-click a service in services.msc and select Pause or Stop, but Windows refuses. The exact message is: "The requested pause or stop is not valid for this service."
I've seen this most often on Windows Server 2022 and Windows 10 21H2+, especially after a service update or misconfiguration. The trigger is usually an admin trying to stop a service like Windows Update or Print Spooler during troubleshooting.
The fix: Force the service to stop via command line
services.msc won't let you send a stop command if the service's internal control handler rejects it. But you can bypass that entirely. Here's how:
- Open an elevated Command Prompt (Run as Administrator).
- Find the service name. In
services.msc, double-click your service and look at the Service name field. For Windows Update, it'swuauserv. - Run this command:
sc stop wuauservReplace
wuauservwith your actual service name. - If
sc stopfails with "sERVICE_CANNOT_ACCEPT_CTRL", run this instead:taskkill /f /fi "SERVICES eq wuauserv"This kills the service process directly, which stops the service.
- After forcing it, restart the service with:
sc start wuauserv
The sc stop command sends a SERVICE_CONTROL_STOP request to the service's control handler. If the handler doesn't implement it, sc stop fails. But taskkill doesn't care about control handlers — it terminates the process, which forces the service into a stopped state. This is the nuclear option, but it works every time.
Why this happens
What's actually happening here is that the Windows Service Control Manager (SCM) checks the service's accepted control codes before sending a request. Each service registers which control codes it handles when it starts — typically via the SetServiceStatus function with SERVICE_ACCEPT_STOP or SERVICE_ACCEPT_PAUSE_CONTINUE flags.
If a service doesn't set SERVICE_ACCEPT_STOP, the SCM won't let you send a stop command through services.msc. The same applies to pause. The service developer might have intentionally excluded stop support — for example, some system-critical services like Windows Audio or Base Filtering Engine don't accept stop because stopping them would cripple the OS.
But sometimes it's a bug. I've seen Windows Update (wuauserv) lose its stop handler after a corrupt update. In that case, the service is still running but its SERVICE_STATUS structure is wrong — it reports dwControlsAccepted as zero. The SCM then blocks all control requests.
Less common variations
1. Service stuck in "Stopping" or "Pausing" state
You might see the error because the service is in a transitional state. Run sc query wuauserv to check the current state (STATE field). If it shows STOP_PENDING or PAUSE_PENDING, the service is stuck. Fix it with:
sc queryex wuauserv | find /i "PID"
taskkill /f /pid <PID>
Then start it fresh.
2. Service runs under a different account that lacks permissions
If the service's Log On As account (like LocalSystem vs NetworkService) has been changed, the service might fail to register its control handler properly. Check services.msc → Properties → Log On tab. Reset it to the default account for that service. For example, Print Spooler should be LocalSystem.
3. Corrupted service registry keys
I've seen this on Windows Server 2019 after a botched registry edit. The service's ImagePath or ObjectName under HKLM\SYSTEM\CurrentControlSet\Services\<ServiceName> gets messed up. Export the key, then delete the service with sc delete <ServiceName>, then reinstall or recreate it. For built-in services, use sfc /scannow and Dism /Online /Cleanup-Image /RestoreHealth to repair.
How to prevent this
You can't prevent every service bug, but you can reduce the odds:
- Don't manually edit service registry keys unless you absolutely know what you're doing. One wrong
TypeorStartvalue breaks the control handler. - Keep Windows updated. Microsoft has patched several SCM bugs over the years. On Server 2022, install the latest cumulative update from Windows Update.
- Avoid third-party service wrappers that override the default service behavior. Tools like
srvanyorNSSMcan sometimes fail to register control handlers properly. If you must use them, test that pause and stop work. - Monitor service health with Event Viewer. Look under Windows Logs → System for Service Control Manager events (source:
Service Control Manager, IDs 7035, 7036, 7040). These tell you when a service fails to accept a control.
If you're a developer writing a Windows service, always implement SERVICE_ACCEPT_STOP and SERVICE_ACCEPT_PAUSE_CONTINUE — even if your service doesn't need them. It's better to handle them gracefully (with a log message) than to leave them out and confuse admins.
Was this solution helpful?