This post was migrated from my older blog.
So I was playing around with custom services in C# a couple years back. I never created a service before so I was going off of Microsoft’s MSDN articles and a few blogs that Google searches turned up. They all followed the same pattern.
- Create a new application that inherits ServiceBase
- Create a class that inherits Installer
- Install the application using InstallUtil.exe
This solution works fine, but I don’t really like it much.
Fast forward to about a month ago. We had some issues with one of our servers. One of the steps in troubleshooting the issue was to manually check what the machine and resources looked like from Local System’s perspective. To do this, I opened an instance of
cmd.exe under the Local System account interactively using the built-in tool
SC. (More on how to do that here) I did not know about that tool until then. Turns out, all it does is register the application specified,
cmd.exe in this case, as a service. I decided to test it for use in installing a custom service created in C#. I created a quick service that answered a single incoming TCP connection with “Hello World”. Installed it with
SC, and it worked! I did not have to create an install class within the service, nor did it rely on
InstallUtil.exe. For more information on
SC for installing services, check out the “SC Create” TechNet article