Allow setting application priority.
[nssm.git] / registry.cpp
index cc871b7..c93d3ae 100644 (file)
@@ -51,6 +51,8 @@ int create_parameters(nssm_service_t *service, bool editing) {
   }\r
 \r
   /* Other non-default parameters. May fail. */\r
+  if (service->priority != NORMAL_PRIORITY_CLASS) set_number(key, NSSM_REG_PRIORITY, service->priority);\r
+  else if (editing) RegDeleteValue(key, NSSM_REG_PRIORITY);\r
   unsigned long stop_method_skip = ~service->stop_method;\r
   if (stop_method_skip) set_number(key, NSSM_REG_STOP_METHOD_SKIP, stop_method_skip);\r
   else if (editing) RegDeleteValue(key, NSSM_REG_STOP_METHOD_SKIP);\r
@@ -492,6 +494,13 @@ int get_parameters(nssm_service_t *service, STARTUPINFO *si) {
     }\r
   }\r
 \r
+  /* Try to get priority - may fail. */\r
+  unsigned long priority;\r
+  if (get_number(key, NSSM_REG_PRIORITY, &priority) == 1) {\r
+    if (priority == (priority & priority_mask())) service->priority = priority;\r
+    else log_event(EVENTLOG_WARNING_TYPE, NSSM_EVENT_BOGUS_PRIORITY, service->name, NSSM_REG_PRIORITY, 0);\r
+  }\r
+\r
   /* Try to get file rotation settings - may fail. */\r
   unsigned long rotate_files;\r
   if (get_number(key, NSSM_REG_ROTATE, &rotate_files, false) == 1) {\r