A Few Notes About Services

After developing a Windows Service in C# today I have a few comments on the topic.

  1. If you are using an app that needs a config file, to write logs, or otherwise interact with the disk, make sure the thing has been told a specific path or that you have its files in the place it expects them, not where you expect them (C:\Windows\System32 seems to be a popular place)
  2. In general, a service should never interact with the UI, if you try it and the service resists, take direction from the service and leave things as they are, adding UI, or developing a UI control for a service is a bitch, it isn’t worth it.
  3. Make sure you have functional console/command line code before you convert the thing to a service, it makes things easier to just click Play in Visual Studio instead of having to install/uninstall a service and start/stop/start a service in Windows when changes occur
  4. Services can make life easier if you are open to the idea that easier sometimes means more complexity.
  5. Services cannot speak for themselves like a UI or command line application can, remember to read that event log (and write to it occasionally from the app)