620

How do I uninstall a .NET Windows Service if the service files do not exist anymore?

I installed a .NET Windows Service using InstallUtil. I have since deleted the files but forgot to run

 InstallUtil /u

first, so the service is still listed in the Services MMC.

Do I have to go into the registry? Or is there a better way?

5

15 Answers 15

1218

You have at least three options. I have presented them in order of usage preference.

Method 1 - You can use the SC tool (Sc.exe) included in the Resource Kit. (included with Windows 7/8)

Open a Command Prompt and enter

sc delete <service-name>

Tool help snippet follows:

DESCRIPTION:
        SC is a command line program used for communicating with the
        NT Service Controller and services.

delete----------Deletes a service (from the registry).

Method 2 - use delserv

Download and use delserv command line utility. This is a legacy tool developed for Windows 2000. In current Window XP boxes this was superseded by sc described in method 1.

Method 3 - manually delete registry entries (Note that this backfires in Windows 7/8)

Windows services are registered under the following registry key.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

Search for the sub-key with the service name under referred key and delete it. (and you might need to restart to remove completely the service from the Services list)

21
  • 23
    Method 3 seems to back-fire on Windows 7.
    – rmiesen
    Jul 8, 2013 at 2:15
  • 29
    At method 1, you may experience "The specified service does not exist as an installed service" error, although you see the service at the MMC!!! This is because the name you see is the DisplayName. You may lookup the actual service name at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services tree and pass that as service-name.
    – denispyr
    Jan 30, 2014 at 15:41
  • 9
    Method 3 backfired for me too on Windows 7. Service is there now with Description <Failed to Read Description. Error Code: 2> Mar 18, 2014 at 16:55
  • 28
    note be careful if you are using powershell with sc - it overrides the application with it's set-content cmdlet and if you run sc delete blah it silently fails
    – JonnyRaa
    Mar 21, 2014 at 14:37
  • 13
    NOTE: You have to restart your computer after doing Method 3! Then look at list of Services; it's probably gone now. If it's still in the list, then just do Method 1 to remove it from that list. Oct 24, 2014 at 14:59
189

From the command prompt running in Administrator mode, use the Windows "sc.exe" utility. You will run something like this:

sc delete <service-name>

If the service name has one or more spaces, surround the name in double quotes (h/t @geoffc):

sc delete "<service-name>"
7
  • 23
    If there is a space in the service name, surround it in double quotes.
    – geoffc
    Jun 7, 2013 at 18:02
  • 2
    Why am I getting [SC] OpenService Failed 5: Access is Denied. Feb 17, 2014 at 10:08
  • 15
    @AdrianEnriquez, running cmd.exe as admin fixed this for me. Mar 3, 2014 at 20:27
  • 4
    In windows 8 after using the command, the service appears with disabled status in MMC list. A restart will eliminate the service from the list.
    – Ryan
    May 19, 2014 at 4:45
  • 1
    Is there a way to elevate the privileges for this? I still get "Access is denied" after typing the above command
    – Nick
    Mar 16, 2016 at 14:26
28

Notes on using "sc delete" in Windows 8:

1) Open a CMD window with elevated privileges. [Windows Key-X to bring up a menu with the option; select "Command Prompt (Admin)".]
2) Use the parenthetical name from the list in Services [for example, I used "sc delete gupdate" when, in Services, it read "Google Update (gupdate)"]

25

Some people mentioning sc delete as an answer. This is how I did it, but it took me a while to find the <service-name> parameter.

The command sc query type= service (note, it's very particular with formatting, the space before "service" is necessary) will output a list of Windows services installed, complete with their qualified name to be used with sc delete <service-name> command.

The list is quite long so you may consider piping the output to a text file (i.e. >> C:\test.txt) and then searching through that.

The SERVICE_NAME is the one to use with sc delete <service-name> command.

4
  • 2
    See my comment on the accepted answer. The service name can be determined quickly by looking at the Properties sheet for the service in the Services panel.
    – donperk
    Sep 15, 2014 at 18:39
  • 2
    That was totally unnecessary: if they show up in the services list, you can just open the properties of the services you want to remove from the services list, in the services list, and it will show you the service name. The "service name" listed in the properties there is the same service name, too. :)
    – neminem
    Sep 7, 2017 at 2:21
  • 2
    Yeah I know you can get to the name by other means. I added this because I had trouble figuring out which of the names to use in the command. I had seen the name listed in the service properties, but I didn't know at the time that was the name to use in the command. Using the command line was a good way for me to dump out all the installed services, including the <service_name> to use to remove. I had a couple of services that needed this so it was easier for me to dump the whole list out to file so I could get to them without having to look it up in the services snap-in. Sep 7, 2017 at 17:52
  • 1
    You can just run sc query as it defaults to type= service.
    – Ian Kemp
    Mar 21, 2018 at 13:02
13

Remove Windows Service via Registry

Its very easy to remove a service from registry if you know the right path. Here is how I did that:

  1. Run Regedit or Regedt32

  2. Go to the registry entry "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services"

  3. Look for the service that you want delete and delete it. You can look at the keys to know what files the service was using and delete them as well (if necessary).

Delete Windows Service via Command Window

Alternatively, you can also use command prompt and delete a service using following command:

sc delete

You can also create service by using following command

sc create "MorganTechService" binpath= "C:\Program Files\MorganTechSPace\myservice.exe"

Note: You may have to reboot the system to get the list updated in service manager.

12

If you wish to use a tool for it you could use Process Hacker

Form to create the service:

Process Hacker Create Service

Context menu on a service to delete it:

Process Hacker Delete Service

I find Process Hacker a more convient tool to manage Windows processes and services than Windows's own Taskmgr.exe. Especially on Windows XP, where you can't access services at all from task manager.

1
  • It gives: the specified service is marked for deletion.
    – zygimantus
    Sep 29, 2020 at 19:26
7

I needed to reinstall my tomcat service, which meant first removing it. This worked for me:

Start a command prompt window using run as administrator

sc query type= service >t.txt

(edit the file t.txt, search through the list and find the tomcat service. It's called Tomcat7)

sc delete Tomcat7

HOWEVER, the query command did not work the first time, because the tomcat service was not running. It seems to only list services that are running. I had to start the service and run the query command again.

2
  • 1
    If you want to see stopped services, use the state parameter. Oct 10, 2015 at 23:44
  • To see all services: sc query type= service state= all
    – Andrew Fox
    May 19, 2022 at 2:22
4

If the original Service .InstallLog and .InstallState files are still in the folder, you can try reinstalling the executable to replace the files, then use InstallUtil /u, then uninstall the program. It's a bit convoluted, but worked in a particular instance for me.

4

You can try running Autoruns, which would save you from having to edit the registry by hand. This is especially useful when you don't have the needed permissions.

2

Lots of great answers and this really helped me, but there was one thing that was missing. There's a mention of finding the service through cmd with sc query type= service but the problem is that the service I was looking for wasn't running and this command only shows running services (which may be a new feature that didn't exist at the time of the OP answer).

You have to pass the state of the service to the command like this sc query state= all or sc query state= inactive There's no need to pass the type= service because that is the default.

And, as stated above, push it to a text file so it's easier to search sc query state= inactive > C:\servicesStopped.txt

Source: https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/sc-query

0

1st Step : Move to the Directory where your service is present

Command : cd c:\xxx\yyy\service

2nd Step : Enter the below command

Command : C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe service.exe \u

Here service.exe is your service exe and \u will uninstall the service. you'll see "The uninstall has completed" message.

If you wanna install a service, Remove \u in the above command which will install your service

1
  • 3
    The OP clearly said that the original files have been deleted.
    – AFract
    May 10, 2017 at 13:43
0

We discovered that even if you run sc_delete, there can be an entry remaining in the registry for your service, so that reinstalling the service results in a corrupted set of registry entries (they don't match). What we did was to regedit and remove this leftover entry by hand.

Note: ShipmunkService is still showing up after sc_delete!

Then you can reinstall, and your service will run correctly. Best of luck to you all, and may the force be with you.

0

You can uninstall your windows service by command prompt also just write this piece of command

cd\                                                                   

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319(or version in which you developed your service)                                           

installutil c:\\xxx.exe(physical path of your service) -d
0

-Windows+r open cmd.

-sc YourSeviceName this code remove your service.

-Uninstal "YourService Path" this code uninstall your service.

0

The easiest way is to use Sys Internals Autoruns

enter image description here

Start it in admin mode and then you can remove obsolete services by delete key

Not the answer you're looking for? Browse other questions tagged or ask your own question.