]> source.dussan.org Git - tigervnc.git/commitdiff
Provide description for services
authorPierre Ossman <ossman@cendio.se>
Tue, 12 Jan 2016 09:13:17 +0000 (10:13 +0100)
committerPierre Ossman <ossman@cendio.se>
Tue, 12 Jan 2016 09:13:17 +0000 (10:13 +0100)
The argument named "desc" was not actually the description, but
rather the short "display name". Add handling for the actual
description to reduce confusion.

win/rfb_win32/Service.cxx
win/rfb_win32/Service.h
win/winvnc/winvnc.cxx

index 99b3eaa18c34048ad93bfb2ed14ced3530e46274..c385fa05c63093267414be16e2a3529dbd44c101 100644 (file)
@@ -391,7 +391,9 @@ bool rfb::win32::initEventLogLogger(const TCHAR* srcname) {
 
 // -=- Registering and unregistering the service
 
-bool rfb::win32::registerService(const TCHAR* name, const TCHAR* desc,
+bool rfb::win32::registerService(const TCHAR* name,
+                                 const TCHAR* display,
+                                 const TCHAR* desc,
                                  int argc, char** argv) {
 
   // - Initialise the default service parameters
@@ -429,15 +431,19 @@ bool rfb::win32::registerService(const TCHAR* name, const TCHAR* desc,
     if (!scm)
       throw rdr::SystemException("unable to open Service Control Manager", GetLastError());
 
-
+    // - Add the service
     ServiceHandle service = CreateService(scm,
-      name, desc, SC_MANAGER_ALL_ACCESS,
+      name, display, SC_MANAGER_ALL_ACCESS,
       SERVICE_WIN32_OWN_PROCESS | SERVICE_INTERACTIVE_PROCESS,
       SERVICE_AUTO_START, SERVICE_ERROR_IGNORE,
       cmdline.buf, NULL, NULL, NULL, NULL, NULL);
     if (!service)
       throw rdr::SystemException("unable to create service", GetLastError());
 
+    // - Set a description
+    SERVICE_DESCRIPTION sdesc = {(LPTSTR)desc};
+    ChangeServiceConfig2(service, SERVICE_CONFIG_DESCRIPTION, &sdesc);
+
     // - Register the event log source
     RegKey hk, hk2;
 
index 198726ce1d657193e323766b6916e02122cb07d2..cbb6263dc38b5ce8d0a5f282222d84d9b1e4a447 100644 (file)
@@ -105,7 +105,8 @@ namespace rfb {
     //     event source information, etc.
     // *** should really accept TCHAR argv
 
-    bool registerService(const TCHAR* name, const TCHAR* desc, int argc, char** argv);
+    bool registerService(const TCHAR* name, const TCHAR* display,
+                         const TCHAR* desc, int argc, char** argv);
     bool unregisterService(const TCHAR* name);
 
     bool startService(const TCHAR* name);
index cb0e8e45ea52554b1a7dc095b10d545dbd8e41c3..ff16aacd0d98f88fe33906a0c2f42864e249254c 100644 (file)
@@ -169,6 +169,7 @@ static void processParams(int argc, char** argv) {
         int j = i;
         i = argc;
         if (rfb::win32::registerService(VNCServerService::Name,
+                                        _T("TigerVNC Server"),
                                         _T("Provides remote access to this machine via the VNC/RFB protocol."),
                                         argc-(j+1), &argv[j+1]))
           MsgBoxOrLog("Registered service successfully");