\r
unsigned long constant;\r
switch (get_number(key, (TCHAR *) name, &constant, false)) {\r
- case 0: return value_from_string(name, value, (const TCHAR *) default_value);\r
+ case 0:\r
+ if (value_from_string(name, value, (const TCHAR *) default_value) == -1) return -1;\r
+ return 0;\r
case -1: return -1;\r
}\r
\r
}\r
\r
int native_set_environment(const TCHAR *service_name, void *param, const TCHAR *name, void *default_value, value_t *value, const TCHAR *additional) {\r
- HKEY key = open_service_registry(service_name, KEY_SET_VALUE, false);\r
+ HKEY key = open_service_registry(service_name, KEY_SET_VALUE, true);\r
if (! key) return -1;\r
\r
- int ret = setting_set_environment(service_name, (void *) key, NSSM_NATIVE_ENVIRONMENT, default_value, value, additional);\r
+ int ret = setting_set_environment(service_name, (void *) key, name, default_value, value, additional);\r
RegCloseKey(key);\r
return ret;\r
}\r
\r
int native_get_environment(const TCHAR *service_name, void *param, const TCHAR *name, void *default_value, value_t *value, const TCHAR *additional) {\r
- HKEY key = open_service_registry(service_name, KEY_READ, false);\r
+ HKEY key = open_service_registry(service_name, KEY_READ, true);\r
if (! key) return -1;\r
\r
ZeroMemory(value, sizeof(value_t));\r
- int ret = setting_get_environment(service_name, (void *) key, NSSM_NATIVE_ENVIRONMENT, default_value, value, additional);\r
+ int ret = setting_get_environment(service_name, (void *) key, name, default_value, value, additional);\r
RegCloseKey(key);\r
return ret;\r
}\r
{ NSSM_REG_KILL_THREADS_GRACE_PERIOD, REG_DWORD, (void *) NSSM_KILL_THREADS_GRACE_PERIOD, false, 0, setting_set_number, setting_get_number },\r
{ NSSM_REG_KILL_PROCESS_TREE, REG_DWORD, (void *) 1, false, 0, setting_set_number, setting_get_number },\r
{ NSSM_REG_THROTTLE, REG_DWORD, (void *) NSSM_RESET_THROTTLE_RESTART, false, 0, setting_set_number, setting_get_number },\r
+ { NSSM_REG_HOOK_SHARE_OUTPUT_HANDLES, REG_DWORD, 0, false, 0, setting_set_number, setting_get_number },\r
{ NSSM_REG_ROTATE, REG_DWORD, 0, false, 0, setting_set_number, setting_get_number },\r
{ NSSM_REG_ROTATE_ONLINE, REG_DWORD, 0, false, 0, setting_set_number, setting_get_number },\r
{ NSSM_REG_ROTATE_SECONDS, REG_DWORD, 0, false, 0, setting_set_number, setting_get_number },\r