From: Iain Patterson Date: Wed, 1 Jan 2014 16:05:52 +0000 (+0000) Subject: Allow querying a service's name. X-Git-Tag: v2.22~89 X-Git-Url: http://git.iain.cx/?p=nssm.git;a=commitdiff_plain;h=121d394369e8ea77930579c2d8a285c219ac446c Allow querying a service's name. Since we can now open a service by its display name it may be interesting to know what its canonical name is. Find out with: nssm get Name --- diff --git a/README.txt b/README.txt index 6955ba4..19fcb8e 100644 --- a/README.txt +++ b/README.txt @@ -324,6 +324,7 @@ run NSSM itself. The parameters recognised are as follows: DisplayName: Service display name. ImagePath: Path to the service executable. ObjectName: User account which runs the service. + Name: Service key name. Start: Service startup type. Type: Service type. @@ -381,6 +382,12 @@ exit code of 2, run nssm set AppExit 2 Exit +The Name parameter can only be queried, not set. It returns the service's +registry key name. This may be useful to know if you take advantage of +the fact that you can substitute the service's display name anywhere where +the syntax calls for . + + The ObjectName parameter requires an additional argument only when setting a username. The additional argument is the password of the user. @@ -486,6 +493,10 @@ To remove the server: nssm remove UT2004 confirm +To find out the service name of a service with a display name: + + nssm get "Background Intelligent Transfer Service" Name + Building NSSM from source ------------------------- diff --git a/messages.mc b/messages.mc index a53eee1..376132f 100644 Binary files a/messages.mc and b/messages.mc differ diff --git a/settings.cpp b/settings.cpp index e64fdc5..7340b1c 100644 --- a/settings.cpp +++ b/settings.cpp @@ -351,6 +351,15 @@ int native_get_imagepath(const TCHAR *service_name, void *param, const TCHAR *na return ret; } +int native_set_name(const TCHAR *service_name, void *param, const TCHAR *name, void *default_value, value_t *value, const TCHAR *additional) { + print_message(stderr, NSSM_MESSAGE_CANNOT_RENAME_SERVICE); + return -1; +} + +int native_get_name(const TCHAR *service_name, void *param, const TCHAR *name, void *default_value, value_t *value, const TCHAR *additional) { + return value_from_string(name, value, service_name); +} + int native_set_objectname(const TCHAR *service_name, void *param, const TCHAR *name, void *default_value, value_t *value, const TCHAR *additional) { SC_HANDLE service_handle = (SC_HANDLE) param; if (! service_handle) return -1; @@ -666,6 +675,7 @@ settings_t settings[] = { { NSSM_NATIVE_DISPLAYNAME, REG_SZ, NULL, true, 0, native_set_displayname, native_get_displayname }, { NSSM_NATIVE_IMAGEPATH, REG_EXPAND_SZ, NULL, true, 0, native_set_imagepath, native_get_imagepath }, { NSSM_NATIVE_OBJECTNAME, REG_SZ, NSSM_LOCALSYSTEM_ACCOUNT, true, ADDITIONAL_SETTING, native_set_objectname, native_get_objectname }, + { NSSM_NATIVE_NAME, REG_SZ, NULL, true, 0, native_set_name, native_get_name }, { NSSM_NATIVE_STARTUP, REG_SZ, NULL, true, 0, native_set_startup, native_get_startup }, { NSSM_NATIVE_TYPE, REG_SZ, NULL, true, 0, native_set_type, native_get_type }, { NULL, NULL, NULL, NULL, NULL } diff --git a/settings.h b/settings.h index 71e31d1..0499dbe 100644 --- a/settings.h +++ b/settings.h @@ -4,6 +4,7 @@ #define NSSM_NATIVE_DESCRIPTION _T("Description") #define NSSM_NATIVE_DISPLAYNAME _T("DisplayName") #define NSSM_NATIVE_IMAGEPATH _T("ImagePath") +#define NSSM_NATIVE_NAME _T("Name") #define NSSM_NATIVE_OBJECTNAME _T("ObjectName") #define NSSM_NATIVE_STARTUP _T("Start") #define NSSM_NATIVE_TYPE _T("Type")