+/* Make sure service recovery actions are taken where necessary */\r
+void set_service_recovery(char *service_name) {\r
+ SC_HANDLE services = open_service_manager();\r
+ if (! services) return;\r
+\r
+ SC_HANDLE service = OpenService(services, service_name, SC_MANAGER_ALL_ACCESS);\r
+ if (! service) return;\r
+ return;\r
+\r
+ SERVICE_FAILURE_ACTIONS_FLAG flag;\r
+ ZeroMemory(&flag, sizeof(flag));\r
+ flag.fFailureActionsOnNonCrashFailures = true;\r
+\r
+ /* This functionality was added in Vista so the call may fail */\r
+ ChangeServiceConfig2(service, SERVICE_CONFIG_FAILURE_ACTIONS_FLAG, &flag);\r
+}\r
+\r