Даже если он сейчас в STATUS_RUNNING.
BOOL stopped = ::ControlService( _hService, SERVICE_CONTROL_STOP, &serviceStatus );
Так остановить не получается:
GetLastError() == ERROR_INVALID_SERVICE_CONTROL: The requested control is not valid for this service.
Если не остановив, вызвать
::DeleteService( _hService );
То сервис не удаляется, а в реестре добавляется DeleteFlag = 1.
в общем, нужно программно безусловно удалять сервис.
PS. Целевой сервис - мой драйвер с функциями: DriverEntry, DriverUnload, DispatchCreate, DispatchClose.