Eóin,
You did such a great job with this.
One issue that i'm slightly concerned about with regard to backups.
If one makes a backup, and then later installs a program that creates a new service entry, and then experiments with the new service installed, disabling, etc. Then one day they say ok i've messed everything up and they restores the backup, the new service will not be restored to it's initial state, am i right?
I wonder if the better solution would be something like this:
Whenever a new service is detected that the program has never seen before, it saves its initial state to a special file.
Now you can do two things:
1) You can highlight any service in the current display whose setting currently DIFFERS from its initial state when first discovered (i.e. show users visually which services they have modified).
2) Let users see on request what the initial state of the service was for reference information.
3) Have a function called "restore all services to their initial states" or something like that, which is the true backup restoration procedure for emergencies.
4) You might also just have a per-item right click saying "Restore this service to it's original state (automatic startup)" which would be a nice thing and would take care of item #2 as well.
Just an idea.