Looking at some of the tutorials online, i am once again baffled on how ridiculous “google” results are on creating Windows Service for C#.
I wonder where these people get the ideas from posting such advice and tutorial that hardly works but is confusing. If you refer to my other rants on multi-language .NET and calling C dll you will see what i mean.
Anyway here is how u do it. If you find reading it confusing, take a glance at the snapshots below.
1. I assume you are using VS 2010 and C#
2. Start a new project, select windows Service.
3.You will see 2 class, click on the tab with the word “designer”, right click “properties”. Select “Add Installer”
4. You will get ProjectInstaller.cs. Click on the tab with “ProjectInstaller.cs [Design]” and click on the “serviceinstaller1” and on the lower right “Solution Explorer” you will see the properties. Set the “ServiceName” to any name u want to be used as the service name (the Service Name that appears when u right-click on any services in the services control panel properties). The service name here is the one that will be used not the one you see on the other service class that was created when u created this project (in 1st screen shot, the properties u see there, that service name is not the one that will appear or use in the actual services)
5. Set the Display Name to the name you WANT to see shown in the list of services in the Services control panel (services.msc)
6. Click on “ServiceProcessInstaller1” and Set the “Account” to the LocalSystem. If you don’t do this, you will get some stupid pop-up asking you to key in the username and password to use for running this service as that user.
7.Now all you need to do is to fill up your actual Service1.cs’s “OnStart” and “OnStop” with whatever routines you want to run and stop as a service.
8. Copy Installutil.exe from c:\windows\microsoft.net\framework\v2.0xxxxx to c:\windows
9. Run the command prompt / cmd as “Administrator” and goto where your .EXE is built and run “installutil xxxxx.exe” to install it.