X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=registry.cpp;h=e192529434caf3ea9e6027af44b3db462f87ddd5;hb=9f3d08676d86c939b864b4868d99b6e5772d95c8;hp=59b8c48567b611630c59156f39ae030546d18f43;hpb=5b9e64a9ae1fbf1254c9c246e5b123d3aa77a37a;p=nssm.git diff --git a/registry.cpp b/registry.cpp index 59b8c48..e192529 100644 --- a/registry.cpp +++ b/registry.cpp @@ -387,13 +387,22 @@ int get_parameters(nssm_service_t *service, STARTUPINFO *si) { } } + /* Change to startup directory in case stdout/stderr are relative paths. */ + TCHAR cwd[MAX_PATH]; + GetCurrentDirectory(_countof(cwd), cwd); + SetCurrentDirectory(service->dir); + /* 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); + SetCurrentDirectory(cwd); return 5; } + /* Change back in case the startup directory needs to be deleted. */ + SetCurrentDirectory(cwd); + /* Try to get throttle restart delay */ override_milliseconds(service->name, key, NSSM_REG_THROTTLE, &service->throttle_delay, NSSM_RESET_THROTTLE_RESTART, NSSM_EVENT_BOGUS_THROTTLE);