HKEY key = open_registry(service->name, KEY_WRITE);\r
if (! key) return 1;\r
\r
+ /* Remember parameters in case we need to delete them. */\r
+ TCHAR registry[KEY_LENGTH];\r
+ int ret = service_registry_path(service->name, true, 0, registry, _countof(registry));\r
+\r
/* Try to create the parameters */\r
if (set_expand_string(key, NSSM_REG_EXE, service->exe)) {\r
- RegDeleteKey(HKEY_LOCAL_MACHINE, NSSM_REGISTRY);\r
+ if (ret > 0) RegDeleteKey(HKEY_LOCAL_MACHINE, registry);\r
RegCloseKey(key);\r
return 2;\r
}\r
if (set_expand_string(key, NSSM_REG_FLAGS, service->flags)) {\r
- RegDeleteKey(HKEY_LOCAL_MACHINE, NSSM_REGISTRY);\r
+ if (ret > 0) RegDeleteKey(HKEY_LOCAL_MACHINE, registry);\r
RegCloseKey(key);\r
return 3;\r
}\r
if (set_expand_string(key, NSSM_REG_DIR, service->dir)) {\r
- RegDeleteKey(HKEY_LOCAL_MACHINE, NSSM_REGISTRY);\r
+ if (ret > 0) RegDeleteKey(HKEY_LOCAL_MACHINE, registry);\r
RegCloseKey(key);\r
return 4;\r
}\r