Use close_handle().
[nssm.git] / gui.cpp
diff --git a/gui.cpp b/gui.cpp
index 5fe3384..0fa11f4 100644 (file)
--- a/gui.cpp
+++ b/gui.cpp
@@ -354,7 +354,7 @@ static inline void set_hook_tab(int event_index, int action_index, bool changed)
     SetEnvironmentVariable(hook_name, cmd);\r
   }\r
   else {\r
-    GetEnvironmentVariable(hook_name, cmd, _countof(cmd));\r
+    if (! GetEnvironmentVariable(hook_name, cmd, _countof(cmd))) cmd[0] = _T('\0');\r
     SetDlgItemText(tablist[NSSM_TAB_HOOKS], IDC_HOOK, cmd);\r
   }\r
 }\r
@@ -465,13 +465,12 @@ int configure(HWND window, nssm_service_t *service, nssm_service_t *orig_service
   }\r
   else if (SendDlgItemMessage(tablist[NSSM_TAB_LOGON], IDC_VIRTUAL_SERVICE, BM_GETCHECK, 0, 0) & BST_CHECKED) {\r
     if (service->username) HeapFree(GetProcessHeap(), 0, service->username);\r
-    service->usernamelen = _tcslen(NSSM_VIRTUAL_SERVICE_ACCOUNT_DOMAIN) + _tcslen(service->name) + 2;\r
-    service->username = (TCHAR *) HeapAlloc(GetProcessHeap(), 0, service->usernamelen * sizeof(TCHAR));\r
+    service->username = virtual_account(service->name);\r
     if (! service->username) {\r
       popup_message(window, MB_OK | MB_ICONEXCLAMATION, NSSM_EVENT_OUT_OF_MEMORY, _T("account name"), _T("install()"));\r
       return 6;\r
     }\r
-    _sntprintf_s(service->username, service->usernamelen, _TRUNCATE, _T("%s\\%s"), NSSM_VIRTUAL_SERVICE_ACCOUNT_DOMAIN, service->name);\r
+    service->usernamelen = _tcslen(service->username) + 1;\r
     service->password = 0;\r
     service->passwordlen = 0;\r
   }\r