X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=gui.cpp;h=67458af06f6391ef31bb73c0e514510a7a05c571;hb=f113d025a47ea5a3dd0cb962b5913045ac811b71;hp=1c77bfc1f32c709290e18482c74431c21e678c88;hpb=135329c0790e6d33f658727be3e5439a167a7da8;p=nssm.git diff --git a/gui.cpp b/gui.cpp index 1c77bfc..67458af 100644 --- a/gui.cpp +++ b/gui.cpp @@ -185,29 +185,12 @@ int install(HWND window) { envlen = newlen; /* Test the environment is valid. */ - TCHAR path[MAX_PATH]; - GetModuleFileName(0, path, _countof(path)); - STARTUPINFO si; - ZeroMemory(&si, sizeof(si)); - si.cb = sizeof(si); - PROCESS_INFORMATION pi; - ZeroMemory(&pi, sizeof(pi)); - unsigned long flags = CREATE_SUSPENDED; -#ifdef UNICODE - flags |= CREATE_UNICODE_ENVIRONMENT; -#endif - - if (! CreateProcess(0, path, 0, 0, 0, flags, env, 0, &si, &pi)) { - unsigned long error = GetLastError(); - if (error == ERROR_INVALID_PARAMETER) { - popup_message(MB_OK | MB_ICONEXCLAMATION, NSSM_GUI_INVALID_ENVIRONMENT); - HeapFree(GetProcessHeap(), 0, env); - envlen = 0; - } + if (test_environment(env)) { + popup_message(MB_OK | MB_ICONEXCLAMATION, NSSM_GUI_INVALID_ENVIRONMENT); + HeapFree(GetProcessHeap(), 0, env); cleanup_nssm_service(service); return 5; } - TerminateProcess(pi.hProcess, 0); if (SendDlgItemMessage(tablist[NSSM_TAB_ENVIRONMENT], IDC_ENVIRONMENT_REPLACE, BM_GETCHECK, 0, 0) & BST_CHECKED) { service->env = env;