Click here to Skip to main content
Click here to Skip to main content

Installing .NET Windows Services (the easiest way)

, 19 Jun 2008
Rate this:
Please Sign up or sign in to vote.
Installing .NET Windows services without using InstallUtil.exe


I will demonstrate the easiest way of installing a Windows service. Using the InstallUtil.exe had been my primary mechanism of installing a Windows service until I came across Windows Services Can Install Themselves by W. Kevin Hazzard. That article has demonstrated that a service can be installed/uninstalled/launched from the command line alone. I, on the other hand, have come up with a way to install/uninstall the Windows service by double clicking the service executable.

The traditional command line approach is as follows:

C:\> InstallUtil MyWinService.exe

Kevin Hazzard’s command line approach is as follows:

C:\> MyWinSvcHost.exe -install

My approach: Just double click on the Service EXE.

Using the Code

The first double click on the service executable will install the service and the second double click on the service executable will uninstall the service. Whenever we run a Windows service, the main method gets executed as this serves as the entry point for the service. The list of existing Windows services can be fetched using the GetServices method of the ServiceController class. Loop through the array of services to determine if our service is already installed.

If the service does not exist on the machine, we will install it by executing the InstallMe method of the SelfInstaller class, followed by a message box notification of the same.



If the service does not exist on the machine, we will uninstall it by executing the UninstallMe method of the SelfInstaller class, followed by a message box notification of the same.



As Kevin said in his article, this style of installing the service without using the InstallUtil.exe provides us with many options of installing and invoking the service. Happy coding, my dear fellow s/w brothers. You can also find this and my other posts at Cavemansblog.


Version 2.0: Code can be downloaded from the link at the top of this article (See version 2).

  1. Added SMESSER's code to get rid of the annoying alert box (cannot start service from the command line or a debugger) that appears after the service has been installed/uninstalled.
  2. Added code to make this approach more secure (Thanks to PIEBALDconsult's concern) by prompting the user, is he/she would REALLY like to install/uninstall the service.
  3. Moved the WSInstaller class to WSInstaller.cs for cleaner code.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Sudheer Reddy Battula

United States United States
Sudheer Reddy Battula - Caveman's Blog

Comments and Discussions

QuestionThank you!? Pinmemberomidt2023-Dec-13 20:37 
QuestionInstalling .NET Windows Services (the easiest way) Pinmemberradesi22-Aug-13 7:04 
QuestionAwesome PinmemberMichael Smit17-Jul-13 5:14 
GeneralMy vote of 5 Pinmembervaerge28-Feb-13 14:05 
GeneralMy vote of 5 PinmemberAbkarino27-Apr-11 22:54 
GeneralBeware of uninstall issue PinmemberKamranBehzad12-May-10 16:45 
Thank you for this. It's excellent. Just note the following.
I wrote a Windows Service program such that running the .exe would install and uninstall the service automatically. And I used this method of installation when testing.
I also had the same service being installed with an .msi.
A problem that occurred was that when I tried to install a new version with msi, it would tell me that an older version is already installed and must be removed at the control panel. But Control panel (add/remove programs) could not remove it (item was there but got error message during uninstall) because I had already uninstalled the service by running the .exe.
What I had to do was to run the .exe again to install it. Then use control panel to uninstall it the formal way so .msi could install it formally.
Kamran Behzad

QuestionHow can I define startup parameters for a windows service while installing it? PinmemberMember 25855272-Mar-09 7:07 
AnswerRe: How can I define startup parameters for a windows service while installing it? Pinmemberyipmonster23-Apr-10 9:07 
GeneralFigured it out... Pinmembersmesser21-Jun-08 20:11 
GeneralRe: Figured it out... PinmemberSudheer Reddy Battula21-Jun-08 20:52 
GeneralRe: Figured it out... Pinmembersmesser22-Jun-08 5:25 
GeneralNot the solution you are looking for but... [modified] Pinmembersmesser20-Jun-08 11:24 
GeneralPlease include links to referenced articles PinmemberZoltan Balazs19-Jun-08 11:44 
GeneralRe: Please include links to referenced articles PinmemberSudheer Reddy Battula19-Jun-08 12:07 
GeneralSoooo... PinmemberPIEBALDconsult19-Jun-08 9:29 
GeneralRe: Soooo... PinmemberSudheer Reddy Battula19-Jun-08 11:41 
GeneralRe: Soooo... PinmemberPIEBALDconsult19-Jun-08 15:06 
GeneralRe: Soooo... PinmemberSudheer Reddy Battula20-Jun-08 7:30 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web01 | 2.8.140821.2 | Last Updated 19 Jun 2008
Article Copyright 2008 by Sudheer Reddy Battula
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid