private void stopServices()
{
var allServices = ServiceController.GetServices();
var serviceNames = RuntimeConfiguration.WindowsServices.Select( s => s.InstalledName );
foreach( var service in allServices.Where( sc => serviceNames.Contains( sc.ServiceName ) ) ) {
// Clear failure actions.
EwlStatics.RunProgram( "sc", "failure \"{0}\" reset= {1} actions= \"\"".FormatWith( service.ServiceName, serviceFailureResetPeriod ), "", true );
if( service.Status == ServiceControllerStatus.Stopped )
continue;
service.Stop();
service.WaitForStatusWithTimeOut( ServiceControllerStatus.Stopped );
}
}