git://git.iain.cx/iain
/
nssm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix crash on Windows XP.
[nssm.git]
/
registry.cpp
diff --git
a/registry.cpp
b/registry.cpp
index
5953f8a
..
e499933
100644
(file)
--- a/
registry.cpp
+++ b/
registry.cpp
@@
-32,19
+32,23
@@
int create_parameters(nssm_service_t *service, bool editing) {
HKEY key = open_registry(service->name, KEY_WRITE);
\r
if (! key) return 1;
\r
\r
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
/* 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
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
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
RegCloseKey(key);
\r
return 4;
\r
}
\r