Argument consistency.
[nssm.git] / service.cpp
index d01ece0..fe67262 100644 (file)
@@ -472,17 +472,19 @@ int get_service_username(const TCHAR *service_name, const QUERY_SERVICE_CONFIG *
 \r
   if (! qsc) return 1;\r
 \r
-  if (is_localsystem(qsc->lpServiceStartName)) return 0;\r
+  if (qsc->lpServiceStartName[0]) {\r
+    if (is_localsystem(qsc->lpServiceStartName)) return 0;\r
 \r
-  size_t len = _tcslen(qsc->lpServiceStartName);\r
-  *username = (TCHAR *) HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(TCHAR));\r
-  if (! *username) {\r
-    print_message(stderr, NSSM_MESSAGE_OUT_OF_MEMORY, _T("username"), _T("get_service_username()"));\r
-    return 2;\r
-  }\r
+    size_t len = _tcslen(qsc->lpServiceStartName);\r
+    *username = (TCHAR *) HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(TCHAR));\r
+    if (! *username) {\r
+      print_message(stderr, NSSM_MESSAGE_OUT_OF_MEMORY, _T("username"), _T("get_service_username()"));\r
+      return 2;\r
+    }\r
 \r
-  memmove(*username, qsc->lpServiceStartName, (len + 1) * sizeof(TCHAR));\r
-  *usernamelen = len;\r
+    memmove(*username, qsc->lpServiceStartName, (len + 1) * sizeof(TCHAR));\r
+    *usernamelen = len;\r
+  }\r
 \r
   return 0;\r
 }\r
@@ -934,7 +936,8 @@ int edit_service(nssm_service_t *service, bool editing) {
   }\r
   else if (editing) username = NSSM_LOCALSYSTEM_ACCOUNT;\r
 \r
-  if (requires_password(username)) {\r
+  if (well_known_username(username)) password = _T("");\r
+  else {\r
     if (grant_logon_as_service(username)) {\r
       print_message(stderr, NSSM_MESSAGE_GRANT_LOGON_AS_SERVICE_FAILED, username);\r
       return 5;\r