Um den Service zu beenden, würde ich wie Dezipiator schon angedeutet hat, lieber direkt die Service Manager
API verwenden. Auch bei normalen Prozessen ist ein TerminateProcess() zu vermeiden.
Ich hatte irgendwo mal eine Implementation gesehen, welche einfach ExitProcess() in den Zielprozess injiziert. Das ist zwar etwas umständlich, aber es gibt dem Zielprozess wenigstens Zeit, eventuelle Finalizations auszufüren.