The Core Technologies Blog

Our Software // Windows Services // 24×7 Operation


Q&A: Why is the Stop Button Disabled for my Windows Service?

Why is the Stop Button Disabled for my Windows Service?
I want to stop a running service but can’t because the Stop button is grayed out. I am logged into an Administrator account and all other user accounts are logged off. Any ideas why I may be unable to stop the service?

Thank you, all, for your help.

— Matteo

Hi Matteo. Here are 4 potential reasons why the stop button is disabled:

1. The service is temporarily busy

Every now and then, Windows interrogates your service to ask an important question: What operations can users perform?

The service must respond to that status check with the list of operations it is willing to accept at that time. For example, if the service is running, the response might indicate that it is OK for someone to:

  • Stop the service
  • Pause the service
  • Send a trigger event

Notice that the list would not include “Start the service” because the service is already running.

The Services application uses the response to enable and disable buttons on the service’s properties window. A button will be disabled if its corresponding operation cannot be performed.

So, for whatever reason, your service may not be accepting the “Stop the service” operation at the current time. But that could be temporary. Try closing and reopening the Services application and see if the stop button is eventually enabled. Maybe fortune will smile on you. 🙂

2. The service is “unstoppable”

Some services simply refuse to accept the stop command at any time. They resolutely respond to the “What operations can users perform?” status check with “I cannot stop”.

You can detect one of those unstoppable services using the powerful SC command. Run this command (from an administrative command prompt) and look for NOT_STOPPABLE in the STATE:

sc query <Service-Name>

For example, the critical DCOM Server Process Launcher (DcomLaunch) is unstoppable:

The DcomLaunch service is unstoppable

And as a result, all its buttons are disabled:

DcomLaunch service buttons grayed out

Is your service unstoppable? Perhaps it is a critical service that needs to run all the time. The only reliable way to stop one of those services is to shut down the computer.

3. The service is hung/stuck

By definition, an unresponsive Windows Service does not answer the periodic status check. The consequence is that no operations can be performed on the service. All its buttons will be disabled in the Services application, as we see here with a service developed by one of our customers:

Windows Service buttons disabled

Put on your detective hat and check the Event Viewer for errors and warnings from your service. Maybe something is going wrong that you (or the author of the software) should address.

4. You don’t have permission to stop the service

The Stop button may be grayed out because you simply don’t have the right to press it.

Are you an administrator on your PC? If so, you might be able to grant yourself the ability to stop the service using our free Service Security Editor utility. Please review this article to showing how to adjust the rights of your Windows Service.

For example, here we see that user “Mike Jones” is explicitly prevented from stopping a service on our Windows Server 2019 machine:

Stop service denied

We removed the check mark from the Deny column and added it to the Allow column (and clicked the Apply button) to enable Mike to stop the service:

Allow stop service

How to forcibly stop your service

Each Windows Service is backed by a process listed in Task Manager. Terminating that process will stop the service. Here is how to do that, referencing the Print Spooler service as an example:

  1. Find the name of your service. It will be displayed at the top of the service’s properties window.

    For example, the name of the Print Spooler service is Spooler:

    Print Spooler service name

  2. Start an administrative command prompt.

  3. Run this command, replacing <SERVICE-NAME> with the name of the service you found in step 1:

    sc queryex "<SERVICE-NAME>"

    Note the PID value in the command’s output (2444 in this example):

    Query the status of the Spooler service
  4. Replacing <PID> with the PID you collected, run this command to forcibly terminate the service’s process:

    taskkill /F /T /PID <PID>

    Use Taskkill to terminate the Spooler process

If all goes well, your service should stop.

Best of luck!

Posted in Windows Services | Tagged , , , , | Leave a comment

Leave a Reply

Your email address will not be published. Required fields are marked *