As in the following link, one can stop, start, and \"stop, then start\" a service using C# code.
http://www.csharp-examples.net/restart-windows-service/
I ha
The usual means of communicating with external processes in windows are:
The first two have been exposed as WCF so that is the way to go. Third one does not seem relevant to your situation and is old.
If you need to run your commands from the same machine you can use named pipes but hardening has made it very difficult and troublesome. Otherwise use WCF's TCP named binding.