Index: /trunk/src/VBox/Additions/common/VBoxService/VBoxService.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxService/VBoxService.cpp	(revision 29315)
+++ /trunk/src/VBox/Additions/common/VBoxService/VBoxService.cpp	(revision 29316)
@@ -308,8 +308,13 @@
             {
                 /*
-                 * HACK ALERT! If a service uses some sort of HGCM host service
-                 * which is not available on the host (maybe because the host is
-                 * using an older VBox version), just disable that service here.
+                 * HACK ALERT! If a service uses some sort of functionality (like a
+                 * certain HGCM host service which is not available on the host or
+                 * some special OS feature which is not available on the current guest),
+                 * just disable that service here in case the service told us so.
+                 *
+                 * This prevents terminating the whole VBoxService if a (or some) sub service(s) is/are
+                 * not available.
                  */
+
                 /** @todo r=bird: This a generic thing that isn't necessarily restricted to
                  *        HGCM.  Also, the service knows best whether a host service is required
@@ -317,7 +322,11 @@
                  *        non-fatal init failure, or simply quietly pretend to work.  (Low
                  *        prio.) */
-                if (rc == VERR_HGCM_SERVICE_NOT_FOUND)
-                    VBoxServiceVerbose(0, "Service '%s' failed to find a HGCM service and was disabled\n",
+                if (   rc == VERR_NOT_SUPPORTED
+                    || rc == VERR_NOT_IMPLEMENTED)
+                {
+                    VBoxServiceVerbose(0, "Service '%s' disabled because a certain functionality is not implemented or supported, rc=%Rrc\n",
                                        g_aServices[j].pDesc->pszName, rc);
+                    g_aServices[j].fEnabled = false;
+                }
                 else
                 {
@@ -326,5 +335,4 @@
                     return rc;
                 }
-                g_aServices[j].fEnabled = false;
             }
         }
Index: /trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControl.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControl.cpp	(revision 29315)
+++ /trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControl.cpp	(revision 29316)
@@ -89,10 +89,16 @@
     else
     {
-        if (rc == VERR_HGCM_SERVICE_NOT_FOUND) /* Host service is not available; that's not fatal. */
-            VBoxServiceVerbose(0, "Guest control service is not available\n");
+        if (rc == VERR_HGCM_SERVICE_NOT_FOUND) /* Host service is not available. */
+            VBoxServiceVerbose(0, "Control: Guest control service is not available\n");
         else
             VBoxServiceError("Control: Failed to connect to the guest control service! Error: %Rrc\n", rc);
         RTSemEventMultiDestroy(g_hControlEvent);
         g_hControlEvent = NIL_RTSEMEVENTMULTI;
+
+        /* 
+         * Not having the guest control service on the host renders this whole service
+         * unusable, so report that we are not able to continue. 
+         */
+        rc = VERR_NOT_SUPPORTED;
     }
     return rc;
Index: /trunk/src/VBox/Additions/common/VBoxService/VBoxServiceStats.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxService/VBoxServiceStats.cpp	(revision 29315)
+++ /trunk/src/VBox/Additions/common/VBoxService/VBoxServiceStats.cpp	(revision 29316)
@@ -118,9 +118,11 @@
     rc = VbglR3StatQueryInterval(&gCtx.cMsStatInterval);
     if (RT_SUCCESS(rc))
-        VBoxServiceVerbose(3, "VBoxStatsInit: new statistics interval %u seconds\n", gCtx.cMsStatInterval);
+        VBoxServiceVerbose(3, "VBoxStatsInit: New statistics interval %u seconds\n", gCtx.cMsStatInterval);
     else
         VBoxServiceVerbose(3, "VBoxStatsInit: DeviceIoControl failed with %d\n", rc);
 
 #ifdef RT_OS_WINDOWS
+    /** @todo Use RTLdr instead of LoadLibrary/GetProcAddress here! */
+
     /* NtQuerySystemInformation might be dropped in future releases, so load it dynamically as per Microsoft's recommendation */
     HMODULE hMod = LoadLibrary("NTDLL.DLL");
@@ -132,5 +134,5 @@
         else
         {
-            VBoxServiceError("VBoxStatsInit: NTDLL.NtQuerySystemInformation not found!!\n");
+            VBoxServiceVerbose(3, "VBoxStatsInit: NTDLL.NtQuerySystemInformation not found!\n");
             return VERR_NOT_IMPLEMENTED;
         }
@@ -146,6 +148,6 @@
         else
         {
-            /** @todo now fails in NT4; do we care? */
-            VBoxServiceError("VBoxStatsInit: KERNEL32.GlobalMemoryStatusEx not found!!\n");
+            /** @todo Now fails in NT4; do we care? */
+            VBoxServiceVerbose(3, "VBoxStatsInit: KERNEL32.GlobalMemoryStatusEx not found!\n");
             return VERR_NOT_IMPLEMENTED;
         }
Index: /trunk/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp	(revision 29315)
+++ /trunk/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp	(revision 29316)
@@ -108,4 +108,6 @@
 
 #ifdef RT_OS_WINDOWS
+    /** @todo Use RTLdr instead of LoadLibrary/GetProcAddress here! */
+
     /* Get function pointers. */
     HMODULE hKernel32 = LoadLibrary("kernel32");
@@ -119,10 +121,19 @@
     rc = VbglR3GuestPropConnect(&g_uVMInfoGuestPropSvcClientID);
     if (RT_SUCCESS(rc))
-        VBoxServiceVerbose(3, "Property Service Client ID: %#x\n", g_uVMInfoGuestPropSvcClientID);
+        VBoxServiceVerbose(3, "VMInfo: Property Service Client ID: %#x\n", g_uVMInfoGuestPropSvcClientID);
     else
     {
-        VBoxServiceError("Failed to connect to the guest property service! Error: %Rrc\n", rc);
+        if (rc == VERR_HGCM_SERVICE_NOT_FOUND) /* Host service is not available. */
+            VBoxServiceVerbose(0, "VMInfo: Guest property service is not available\n");
+        else
+            VBoxServiceError("VMInfo: Failed to connect to the guest property service! Error: %Rrc\n", rc);
         RTSemEventMultiDestroy(g_hVMInfoEvent);
         g_hVMInfoEvent = NIL_RTSEMEVENTMULTI;
+
+        /* 
+         * Not having the guest property service on the host renders this whole service
+         * unusable, so report that we are not able to continue. 
+         */
+        rc = VERR_NOT_SUPPORTED;
     }
 
