0X0000088D

0X0000088D: Service can't be controlled in this state

Server & Cloud Intermediate 👁 7 views 📅 May 26, 2026

This error means Windows can't stop or restart a service because it's stuck in a pending state. The fix is usually a reboot or a targeted registry cleanup.

When this error shows up

You're in the Services console (services.msc), right-click a service — maybe the Print Spooler or the Windows Update service — and pick Stop or Restart. Instead of it going gray or bouncing back, you get a popup: "The service could not be controlled in its present state. Error 0X0000088D." I've seen this mostly on Server 2016 and Windows 10 machines that have been running for weeks without a restart. It's common after a failed update or when a service is stuck in a Start Pending, Stop Pending, or even a Paused state.

What's actually going on

Windows tracks every service's state internally — stopped, running, start pending, stop pending, etc. When a service is in one of those intermediate states (like 'pending'), the Service Control Manager (SCM) won't accept any new control commands until it finishes what it's doing. This error means the SCM thinks the service is mid-transition and hasn't timed out yet. The trigger is usually a hung thread inside the service or a deadlock with another service it depends on. Had a client last month whose SQL Server Agent was stuck in Stop Pending for 3 days — every attempt to restart it gave this exact error. The root cause? A blocked database backup job that wouldn't release a lock.

How to fix it — the quick way

Skip the registry edits for now. Boot 'em and reboot. Seriously. A full restart clears every pending state. If that's not an option (production server, can't bounce it), then we go manual.

  1. Check the service state with a command
    Open an elevated PowerShell or CMD. Run:
    sc queryex "ServiceName"
    Replace ServiceName with the actual short name, e.g., spooler for Print Spooler. Look at the STATE line. If it says STOP_PENDING or START_PENDING, that's your problem.
  2. Kill the process behind the service
    If the service has a PID (under PID in sc queryex output), you can nuke it:
    taskkill /F /PID 1234
    Replace 1234 with the actual PID. This forces the service to stop immediately. The SCM will then see it as stopped, and you can restart it fresh.
  3. If that doesn't work, kill from the registry
    Sometimes the service process is already dead but the SCM is confused. Open Regedit, go to:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName
    Look for the FailureActions key — don't touch that. Instead, find the Start value. Change it to 4 (disabled). Reboot the machine (or restart the SCM if you're brave). Then change it back to whatever it was (2 for automatic, 3 for manual) and start the service.
  4. Use PowerShell to force state change
    If you're on Server 2016 or later, try:
    Set-Service -Name "ServiceName" -Status Stopped
    If that fails with the same error, you're stuck with the steps above.

Still stuck? What to check next

If none of that works, check the event log under Application and System for any event ID 7000, 7009, or 7034. Those tell you the service timed out or crashed. Also look for Service Control Manager errors with Event ID 7022 — that means the service hung on start. The fix there is often a registry timeout tweak: add or modify ServicesPipeTimeout in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control. Set it to a DWORD value of 60000 (60 seconds) or more. Reboot after changing that.

One more thing: if this keeps happening with the same service, don't just patch it — find the root cause. A client had this weekly with the DHCP service until I found another service that was locking its database file. Disabling the conflicting service fixed it for good.

Short version: reboot kills 90% of these. For the rest, kill the process or adjust the timeout. Don't overthink it.

Was this solution helpful?