- if (schSCManager)
- {
- schService = OpenService(schSCManager,g_lpszServiceName,DELETE);
- if(schService)
- {
- if (DeleteService(schService))
-
- {
- CloseServiceHandle(schService);
- CloseServiceHandle(schSCManager);
-
- printf(" [%s] Successfully removed from "
- "the Services database.\n", ARGV0);
- return(1);
+ if (schSCManager) {
+ schService = OpenService(schSCManager, g_lpszServiceName, SERVICE_STOP | DELETE);
+ if (schService) {
+ if (CheckServiceRunning()) {
+ verbose("%s: INFO: Found (%s) service is running going to try and stop it.", ARGV0, g_lpszServiceName);
+ ret = ControlService(schService, SERVICE_CONTROL_STOP, &lpServiceStatus);
+ if (!ret) {
+ verbose("%s: ERROR: Failure stopping service (%s) before removing it (%ld).", ARGV0, g_lpszServiceName, GetLastError());
+ } else {
+ verbose("%s: INFO: Successfully stopped (%s).", ARGV0, g_lpszServiceName);
+ }
+ } else {
+ verbose("%s: INFO: Found (%s) service is not running.", ARGV0, g_lpszServiceName);
+ ret = 1;
+ }
+
+ if (ret && DeleteService(schService)) {
+ verbose("%s: INFO: Successfully removed (%s) from the service database.", ARGV0, g_lpszServiceName);
+ rc = 1;