X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=registry.cpp;h=eacde54ecef41fd9d1980a0f2aad17847bd21223;hb=40792fac2ef98e69c331b9cd5a9279dc3e1eb730;hp=d6cde2392d0ef1b6a927398809489488029fd60b;hpb=9727e8ada22d4da8a492b7da0a19d88e4394d59e;p=nssm.git diff --git a/registry.cpp b/registry.cpp index d6cde23..eacde54 100644 --- a/registry.cpp +++ b/registry.cpp @@ -219,7 +219,7 @@ int get_number(HKEY key, char *value, unsigned long *number) { return get_number(key, value, number, true); } -int get_parameters(char *service_name, char *exe, int exelen, char *flags, int flagslen, char *dir, int dirlen, char **env, unsigned long *throttle_delay) { +int get_parameters(char *service_name, char *exe, int exelen, char *flags, int flagslen, char *dir, int dirlen, char **env, unsigned long *throttle_delay, STARTUPINFO *si) { unsigned long ret; /* Get registry */ @@ -272,6 +272,13 @@ int get_parameters(char *service_name, char *exe, int exelen, char *flags, int f /* Try to get environment variables - may fail */ set_environment(service_name, key, env); + /* Try to get stdout and stderr */ + if (get_output_handles(key, si)) { + log_event(EVENTLOG_ERROR_TYPE, NSSM_EVENT_GET_OUTPUT_HANDLES_FAILED, service_name, 0); + RegCloseKey(key); + return 5; + } + /* Try to get throttle restart delay */ unsigned long type = REG_DWORD; unsigned long buflen = sizeof(*throttle_delay);