Index: /trunk/include/VBox/VBoxGuestLib.h
===================================================================
--- /trunk/include/VBox/VBoxGuestLib.h	(revision 23844)
+++ /trunk/include/VBox/VBoxGuestLib.h	(revision 23845)
@@ -404,5 +404,4 @@
 VBGLR3DECL(int)     VbglR3SetGuestCaps(uint32_t fOr, uint32_t fNot);
 VBGLR3DECL(int)     VbglR3WaitEvent(uint32_t fMask, uint32_t cMillies, uint32_t *pfEvents);
-VBGLR3DECL(int)     VbglR3GetAdditionsVersion(char **ppszVer, char **ppszRev);
 /** @} */
 
@@ -472,11 +471,4 @@
 VBGLR3DECL(int)     VbglR3GuestPropWait(uint32_t u32ClientId, const char *pszPatterns, void *pvBuf, uint32_t cbBuf, uint64_t u64Timestamp, uint32_t cMillies, char ** ppszName, char **ppszValue, uint64_t *pu64Timestamp, char **ppszFlags, uint32_t *pcbBufActual);
 /** @}  */
-
-/** @name Host version handling
- * @{ */
-VBGLR3DECL(int)     VbglR3HostVersionCompare(const char *pszVer1, const char *pszVer2);
-VBGLR3DECL(bool)    VbglR3HostVersionCheckForUpdate(char **ppszHostVersion, char **ppszGuestVersion);
-VBGLR3DECL(int)     VbglR3HostVersionStore(const char* pszVer);
-/** @}  */
 # endif /* VBOX_WITH_GUEST_PROPS defined */
 
Index: /trunk/src/VBox/Additions/WINNT/MouseFilter/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Additions/WINNT/MouseFilter/Makefile.kmk	(revision 23844)
+++ /trunk/src/VBox/Additions/WINNT/MouseFilter/Makefile.kmk	(revision 23845)
@@ -45,15 +45,22 @@
 VBoxMouse-inf_INST = $(INST_ADDITIONS)
 VBoxMouse-inf_MODE = a+r,u+w
-ifndef VBOX_SIGNING_MODE
-VBoxMouse-inf_SOURCES = VBoxMouse.inf
-else
-VBoxMouse-inf_SOURCES = \
-	$(PATH_TARGET)/VBoxMouseCat.dir/VBoxMouse.inf \
-	$(PATH_TARGET)/VBoxMouseCat.dir/VBoxMouse.cat
+VBoxMouse-inf_BLDDIRS = $(PATH_TARGET)/VBoxMouseCat.dir
 VBoxMouse-inf_CLEAN += \
 	$(PATH_TARGET)/VBoxMouseCat.dir/VBoxMouse.cat \
 	$(PATH_TARGET)/VBoxMouseCat.dir/VBoxMouse.sys \
 	$(PATH_TARGET)/VBoxMouseCat.dir/VBoxMouse.inf
-VBoxMouse-inf_BLDDIRS = $(PATH_TARGET)/VBoxMouseCat.dir
+
+ifndef VBOX_SIGNING_MODE
+ VBoxMouse-inf_SOURCES = $(PATH_TARGET)/VBoxMouseCat.dir/VBoxMouse.inf
+else
+ VBoxMouse-inf_SOURCES = \
+	$(PATH_TARGET)/VBoxMouseCat.dir/VBoxMouse.inf \
+	$(PATH_TARGET)/VBoxMouseCat.dir/VBoxMouse.cat
+
+ $(PATH_TARGET)/VBoxMouseCat.dir/VBoxMouse.cat: $(PATH_TARGET)/VBoxMouseCat.dir/VBoxMouse.inf $$(TARGET_VBoxMouse)
+	$(call MSG_TOOL,Inf2Cat,VBoxMouse-inf,$@,$<)
+	$(INSTALL) -m 644 $(TARGET_VBoxMouse) $(@D)
+	$(call VBOX_MAKE_CAT_FN, $(@D),$@)
+endif # signing
 
 $(PATH_TARGET)/VBoxMouseCat.dir/VBoxMouse.inf: $(PATH_SUB_CURRENT)/VBoxMouse.inf $(MAKEFILE_CURRENT) | $$(call DIRDEP,$$(@D))
@@ -61,10 +68,4 @@
 	$(call VBOX_EDIT_INF_FN,$<,$@)
 
-$(PATH_TARGET)/VBoxMouseCat.dir/VBoxMouse.cat: $(PATH_TARGET)/VBoxMouseCat.dir/VBoxMouse.inf $$(TARGET_VBoxMouse)
-	$(call MSG_TOOL,Inf2Cat,VBoxMouse-inf,$@,$<)
-	$(INSTALL) -m 644 $(TARGET_VBoxMouse) $(@D)
-	$(call VBOX_MAKE_CAT_FN, $(@D),$@)
-endif # signing
-
 include	$(KBUILD_PATH)/subfooter.kmk
 
Index: /trunk/src/VBox/Additions/WINNT/MouseFilter/VBoxMouse.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/MouseFilter/VBoxMouse.cpp	(revision 23844)
+++ /trunk/src/VBox/Additions/WINNT/MouseFilter/VBoxMouse.cpp	(revision 23845)
@@ -83,5 +83,5 @@
     DriverObject->DriverExtension->AddDevice = VBoxMouse_AddDevice;
 
-    dprintf(("leaving DriverEntry with success\n"));
+    dprintf(("VBoxMouse::DriverEntry: Leaving DriverEntry with success\n"));
     return STATUS_SUCCESS;
 }
Index: /trunk/src/VBox/Additions/WINNT/MouseFilter/VBoxMouse.inf
===================================================================
--- /trunk/src/VBox/Additions/WINNT/MouseFilter/VBoxMouse.inf	(revision 23844)
+++ /trunk/src/VBox/Additions/WINNT/MouseFilter/VBoxMouse.inf	(revision 23845)
@@ -22,8 +22,11 @@
 Class=Mouse
 ClassGuid={4D36E96F-E325-11CE-BFC1-08002BE10318}
+Provider=%SUN%
+LayoutFile=layout.inf
 ;edit-DriverVer=08/26/2008,2.00.0000
 ;cat CatalogFile=VBoxMouse.cat
 
-[SourceDisksNames]
+;x86   [SourceDisksNames]
+;amd64 [SourceDisksNames.amd64]
 1 = %VBoxMouse.MediaDesc%
 
@@ -38,17 +41,21 @@
 ;amd64 %SUN%=VBoxMouse, NTamd64
 
-[DefaultInstall]
-;
-; DefaultInstall section is used to install the class filter driver.
-;
-CopyFiles = @VBoxMouse.sys
+;x86   [VBoxMouse]
+;amd64 [VBoxMouse.NTamd64]
+%VBoxMouse.SvcDesc% = VBoxMouse_Install, *PNP0F03      ; PS/2 device
+
+[VBoxMouse_Install]
+CopyFiles = VBoxMouse_CopyFiles
 AddReg = VBoxMouse_AddReg
+AddServices = VBoxMouse_AddServices
+
+[VBoxMouse_CopyFiles]
+VBoxMouse.sys
 
 [VBoxMouse_AddReg]
 HKLM, System\CurrentControlSet\Control\Class\{4D36E96F-E325-11CE-BFC1-08002BE10318}, UpperFilters, 0x00010000, "VBoxMouse", "mouclass"
 
-[DefaultInstall.Services]
+[VBoxMouse_AddServices]
 AddService = VBoxMouse, , VBoxMouse_Service_Inst
-
 
 [VBoxMouse_Service_Inst]
@@ -59,4 +66,6 @@
 ServiceBinary  = %12%\VBoxMouse.sys
 
+[ClassInstall32]
+; This should fix the error 0xe0000101 (The required section was not found in the INF).
 
 [Strings]
Index: /trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxHostVersion.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxHostVersion.cpp	(revision 23844)
+++ /trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxHostVersion.cpp	(revision 23845)
@@ -27,28 +27,150 @@
 #include <VBox/VBoxGuestLib.h>
 
+/* Returns 0 if equal, 1 if Ver1 is greater, 2 if Ver2 is greater
+ * Requires strings in form of "majorVer.minorVer.build" */
+/** @todo should be common code in the guest lib / headers */
+int VBoxCompareVersion (const char* pszVer1, const char* pszVer2)
+{
+    int rc = 0;
+    int iVer1Major, iVer1Minor, iVer1Build;
+    sscanf(pszVer1, "%d.%d.%d", &iVer1Major, &iVer1Minor, &iVer1Build);
+    int iVer2Major, iVer2Minor, iVer2Build;
+    sscanf(pszVer2, "%d.%d.%d", &iVer2Major, &iVer2Minor, &iVer2Build);
+
+    int iVer1Final = (iVer1Major * 10000) + (iVer1Minor * 100) + iVer1Build;
+    int iVer2Final = (iVer2Major * 10000) + (iVer2Minor * 100) + iVer2Build;
+
+    if (iVer1Final > iVer2Final)
+        rc = 1;
+    else if (iVer2Final > iVer1Final)
+        rc = 2;
+    return rc;
+}
 
 int VBoxCheckHostVersion ()
 {
     int rc;
-    char *pszHostVersion;
-    char *pszGuestVersion;
-    rc = VbglR3HostVersionCheckForUpdate(&pszHostVersion, &pszGuestVersion);
+    uint32_t uGuestPropSvcClientID;
+
+    rc = VbglR3GuestPropConnect(&uGuestPropSvcClientID);
+    if (RT_SUCCESS(rc))
+        Log(("VBoxTray: Property Service Client ID: %ld\n", uGuestPropSvcClientID));
+    else
+        Log(("VBoxTray: Failed to connect to the guest property service! Error: %d\n", rc));
+
+    /* Do we need to do all this stuff? */
+    char *pszCheckHostVersion;
+    rc = VbglR3GuestPropReadValueAlloc(uGuestPropSvcClientID, "/VirtualBox/GuestAdd/CheckHostVersion", &pszCheckHostVersion);
+    if (RT_FAILURE(rc))    
+    {
+        if (rc == VERR_NOT_FOUND)
+            rc = VINF_SUCCESS; /* If we don't find the value above we do the check by default */
+        else
+            Log(("VBoxTray: Could not read check host version flag! rc = %d\n", rc));
+    }
+    else
+    {
+        /* Only don't do the check if we have a valid "0" in it */
+        if (   atoi(pszCheckHostVersion) == 0
+            && strlen(pszCheckHostVersion))
+        {
+            rc = VERR_NOT_SUPPORTED;
+        }
+        VbglR3GuestPropReadValueFree(pszCheckHostVersion);
+    }
+    if (rc == VERR_NOT_SUPPORTED)            
+        Log(("VBoxTray: No host version check performed."));
+
+    char szMsg[256] = "\0"; /* Sizes according to MSDN. */
+    char szTitle[64] = "\0";
+
     if (RT_SUCCESS(rc))
     {
-        char szMsg[256]; /* Sizes according to MSDN. */
-        char szTitle[64];
+        /* Look up host version (revision) */
+        char *pszVBoxHostVer;
+        rc = VbglR3GuestPropReadValueAlloc(uGuestPropSvcClientID, "/VirtualBox/HostInfo/VBoxVer", &pszVBoxHostVer);
+        if (RT_FAILURE(rc))
+        {
+            Log(("VBoxTray: Could not read VBox host version! rc = %d\n", rc));    
+        }
+        else
+        {
+            Log(("VBoxTray: Host version: %s\n", pszVBoxHostVer));
 
-        /** @todo add some translation macros here */
-        _snprintf(szTitle, sizeof(szTitle), "VirtualBox Guest Additions update available!");
-        _snprintf(szMsg, sizeof(szMsg), "Your guest is currently running the Guest Additions version %s. "
-                                        "We recommend updating to the latest version (%s) by choosing the "
-                                        "install option from the Devices menu.", pszGuestVersion, pszHostVersion);
+            /* Look up guest version */
+            char szVBoxGuestVer[32];
+            char szVBoxGuestRev[32];
 
+            rc = getAdditionsVersion(szVBoxGuestVer, sizeof(szVBoxGuestVer), szVBoxGuestRev, sizeof(szVBoxGuestRev));
+            if (RT_SUCCESS(rc))
+            {
+                Log(("VBoxTray: Additions version: %s\n", szVBoxGuestVer));
+
+                /* Look up last informed host version */
+                char szVBoxHostVerLastChecked[32];
+                HKEY hKey;
+                LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Sun\\VirtualBox Guest Additions\\VBoxTray", 0, KEY_READ, &hKey);
+                if (lRet == ERROR_SUCCESS)
+                {
+                    DWORD dwType;
+                    DWORD dwSize = sizeof(szVBoxHostVerLastChecked);
+                    lRet = RegQueryValueEx(hKey, "HostVerLastChecked", NULL, &dwType, (BYTE*)szVBoxHostVerLastChecked, &dwSize);
+                    if (lRet != ERROR_SUCCESS && lRet != ERROR_FILE_NOT_FOUND)
+                        Log(("VBoxTray: Could not read HostVerLastChecked! Error = %ld\n", lRet));
+                    RegCloseKey(hKey);
+                }
+                else if (lRet != ERROR_FILE_NOT_FOUND)
+                {
+                    Log(("VBoxTray: Could not open VBoxTray registry key! Error = %ld\n", lRet));
+                    rc = RTErrConvertFromWin32(lRet);
+                }
+
+                /* Compare both versions and prepare message */
+                if (   RT_SUCCESS(rc)
+                    && strcmp(pszVBoxHostVer, szVBoxHostVerLastChecked) != 0        /* Make sure we did not process this host version already */
+                    && VBoxCompareVersion(pszVBoxHostVer, szVBoxGuestVer) == 1)     /* Is host version greater than guest add version? */
+                {
+                    /** @todo add some translation macros here */
+                    _snprintf(szTitle, sizeof(szTitle), "VirtualBox Guest Additions update available!");
+                    _snprintf(szMsg, sizeof(szMsg), "Your guest is currently running the Guest Additions version %s. "
+                                                    "We recommend updating to the latest version (%s) by choosing the "
+                                                    "install option from the Devices menu.", szVBoxGuestVer, pszVBoxHostVer);
+
+                    /* Save the version to just do a balloon once per new version */
+                    if (RT_SUCCESS(rc))
+                    {
+                        lRet = RegCreateKeyEx (HKEY_LOCAL_MACHINE,
+                                               "SOFTWARE\\Sun\\VirtualBox Guest Additions\\VBoxTray",
+                                               0,           /* Reserved */
+                                               NULL,        /* lpClass [in, optional] */
+                                               0,           /* dwOptions [in] */
+                                               KEY_WRITE,
+                                               NULL,        /* lpSecurityAttributes [in, optional] */
+                                               &hKey,
+                                               NULL);       /* lpdwDisposition [out, optional] */
+                        if (lRet == ERROR_SUCCESS)
+                        {
+                            lRet = RegSetValueEx(hKey, "HostVerLastChecked", 0, REG_SZ, (BYTE*)pszVBoxHostVer, (DWORD)(strlen(pszVBoxHostVer)*sizeof(char)));
+                            if (lRet != ERROR_SUCCESS)
+                                Log(("VBoxTray: Could not write HostVerLastChecked! Error = %ld\n", lRet));
+                            RegCloseKey(hKey);
+                        }
+                        else
+                            Log(("VBoxTray: Could not open VBoxTray registry key! Error = %ld\n", lRet));
+
+                        if (lRet != ERROR_SUCCESS)
+                            rc = RTErrConvertFromWin32(lRet);
+                    }
+                }
+            }
+        }
+        VbglR3GuestPropReadValueFree(pszVBoxHostVer);
+    }
+
+    if (RT_SUCCESS(rc) && strlen(szMsg))
+    {
         rc = showBalloonTip(gInstance, gToolWindow, ID_TRAYICON, szMsg, szTitle, 5000, 0);
         if (RT_FAILURE(rc))
             Log(("VBoxTray: Could not show version notifier balloon tooltip! rc = %d\n", rc));
-
-        VbglR3GuestPropReadValueFree(pszHostVersion);
-        VbglR3GuestPropReadValueFree(pszGuestVersion);
     }
 
@@ -56,4 +178,6 @@
     if (rc == VERR_NOT_SUPPORTED)
         rc = VINF_SUCCESS;
+
+    VbglR3GuestPropDisconnect(uGuestPropSvcClientID);
     return rc;
 }
Index: /trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxHostVersion.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxHostVersion.h	(revision 23844)
+++ /trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxHostVersion.h	(revision 23845)
@@ -25,2 +25,3 @@
 
 #endif /* !___VBoxHostVersion_h */
+
Index: /trunk/src/VBox/Additions/WINNT/VBoxTray/helpers.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/VBoxTray/helpers.cpp	(revision 23844)
+++ /trunk/src/VBox/Additions/WINNT/VBoxTray/helpers.cpp	(revision 23845)
@@ -256,2 +256,51 @@
     return 0;
 }
+
+/** @todo move this in guest lib, also used in a similar way in VBoxService */
+int getAdditionsVersion(char *pszVer, size_t cbSizeVer, char *pszRev, size_t cbSizeRev)
+{
+    HKEY hKey;
+    int rc;
+
+    /* Check the new path first. */
+    rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Sun\\VirtualBox Guest Additions", 0, KEY_READ, &hKey);
+#ifdef RT_ARCH_AMD64
+    if (rc != ERROR_SUCCESS)
+    {
+        /* Check Wow6432Node (for new entries). */
+        rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Wow6432Node\\Sun\\VirtualBox Guest Additions", 0, KEY_READ, &hKey);
+    }
+#endif
+
+    /* Still no luck? Then try the old xVM paths ... */
+    if (RT_FAILURE(rc))
+    {
+        rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Sun\\xVM VirtualBox Guest Additions", 0, KEY_READ, &hKey);
+#ifdef RT_ARCH_AMD64
+        if (rc != ERROR_SUCCESS)
+        {
+            /* Check Wow6432Node (for new entries). */
+            rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Wow6432Node\\Sun\\xVM VirtualBox Guest Additions", 0, KEY_READ, &hKey);
+        }
+#endif
+    }
+
+    /* Did we get something worth looking at? */
+    if (RT_SUCCESS(rc))
+    {
+        DWORD dwSize;
+        DWORD dwType;
+
+        /* Revision. */
+        dwSize = cbSizeRev;
+        rc = RegQueryValueEx(hKey, "Revision", NULL, &dwType, (BYTE*)(LPCTSTR)pszRev, &dwSize);
+        /* Version. */
+        dwSize = cbSizeVer;
+        rc = RegQueryValueEx(hKey, "Version", NULL, &dwType, (BYTE*)(LPCTSTR)pszVer, &dwSize);
+    }
+
+    if (NULL != hKey)
+        RegCloseKey(hKey);
+
+    return rc;
+}
Index: /trunk/src/VBox/Additions/WINNT/VBoxTray/helpers.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/VBoxTray/helpers.h	(revision 23844)
+++ /trunk/src/VBox/Additions/WINNT/VBoxTray/helpers.h	(revision 23845)
@@ -33,4 +33,5 @@
 void resizeRect(RECTL *paRects, unsigned nRects, unsigned iPrimary, unsigned iResized, int NewWidth, int NewHeight);
 int showBalloonTip (HINSTANCE hInst, HWND hWnd, UINT uID, const char *pszMsg, const char *pszTitle, UINT uTimeout, DWORD dwInfoFlags);
+int getAdditionsVersion(char *pszVer, size_t cbSizeVer, char *pszRev, size_t cbSizeRev);
 
 #endif /* !___VBOXTRAY_HELPERS_H */
Index: /trunk/src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk	(revision 23844)
+++ /trunk/src/VBox/Additions/common/VBoxGuestLib/Makefile.kmk	(revision 23845)
@@ -86,7 +86,5 @@
 	VBoxGuestR3LibDaemonize.cpp \
 	VBoxGuestR3LibGR.cpp \
-	$(if $(VBOX_WITH_GUEST_PROPS), \
-		VBoxGuestR3LibGuestProp.cpp \
-		VBoxGuestR3LibHostVersion.cpp,) \
+	$(if $(VBOX_WITH_GUEST_PROPS),VBoxGuestR3LibGuestProp.cpp,) \
 	VBoxGuestR3LibMouse.cpp \
 	VBoxGuestR3LibMisc.cpp \
@@ -98,7 +96,5 @@
 	VBoxGuestR3Lib.cpp \
 	VBoxGuestR3LibGR.cpp \
-	$(if $(VBOX_WITH_GUEST_PROPS), \
-		VBoxGuestR3LibGuestProp.cpp \
-		VBoxGuestR3LibHostVersion.cpp,) \
+	$(if $(VBOX_WITH_GUEST_PROPS),VBoxGuestR3LibGuestProp.cpp,) \
 	VBoxGuestR3LibMisc.cpp \
 	VBoxGuestR3LibTime.cpp
Index: unk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibHostVersion.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibHostVersion.cpp	(revision 23844)
+++ 	(revision )
@@ -1,205 +1,0 @@
-/* $Id: */
-/** @file
- * VBoxGuestR3Lib - Ring-3 Support Library for VirtualBox guest additions, host version check.
- */
-
-/*
- * Copyright (C) 2009 Sun Microsystems, Inc.
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
- * Clara, CA 95054 USA or visit http://www.sun.com if you need
- * additional information or have any questions.
- */
-
-
-/*******************************************************************************
-*   Header Files                                                               *
-*******************************************************************************/
-#include <stdlib.h>
-#include <stdio.h>
-#include <iprt/string.h>
-#include <VBox/log.h>
-
-#ifdef RT_OS_WINDOWS
- #define WIN32_LEAN_AND_MEAN
- #include <windows.h>
-#endif
-
-#include "VBGLR3Internal.h"
-
-/** Compares two VirtualBox version strings and returns the result.
- *  Requires strings in form of "majorVer.minorVer.build"
- *
- * @returns 0 if equal, 1 if Ver1 is greater, 2 if Ver2 is greater.
- *
- * @param   pszVer1     First version string to compare.
- * @param   pszVer2     First version string to compare.
- *
- */
-VBGLR3DECL(int) VbglR3HostVersionCompare(const char *pszVer1, const char *pszVer2)
-{
-    int rc = 0;
-    int iVer1Major, iVer1Minor, iVer1Build;
-    sscanf(pszVer1, "%d.%d.%d", &iVer1Major, &iVer1Minor, &iVer1Build);
-    int iVer2Major, iVer2Minor, iVer2Build;
-    sscanf(pszVer2, "%d.%d.%d", &iVer2Major, &iVer2Minor, &iVer2Build);
-
-    int iVer1Final = (iVer1Major * 10000) + (iVer1Minor * 100) + iVer1Build;
-    int iVer2Final = (iVer2Major * 10000) + (iVer2Minor * 100) + iVer2Build;
-
-    if (iVer1Final > iVer2Final)
-        rc = 1;
-    else if (iVer2Final > iVer1Final)
-        rc = 2;
-    return rc;
-}
-
-
-/** @todo Docs */
-VBGLR3DECL(bool) VbglR3HostVersionCheckForUpdate(char **ppszHostVersion, char **ppszGuestVersion)
-{
-    int rc;
-    uint32_t uGuestPropSvcClientID;
-
-    rc = VbglR3GuestPropConnect(&uGuestPropSvcClientID);
-    if (RT_SUCCESS(rc))
-        LogFlow(("Property Service Client ID: %ld\n", uGuestPropSvcClientID));
-    else
-        LogFlow(("Failed to connect to the guest property service! Error: %d\n", rc));
-
-    /* Do we need to do all this stuff? */
-    char *pszCheckHostVersion;
-    rc = VbglR3GuestPropReadValueAlloc(uGuestPropSvcClientID, "/VirtualBox/GuestAdd/CheckHostVersion", &pszCheckHostVersion);
-    if (RT_FAILURE(rc))
-    {
-        if (rc == VERR_NOT_FOUND)
-            rc = VINF_SUCCESS; /* If we don't find the value above we do the check by default */
-        else
-            LogFlow(("Could not read check host version flag! rc = %d\n", rc));
-    }
-    else
-    {
-        /* Only don't do the check if we have a valid "0" in it */
-        if (   atoi(pszCheckHostVersion) == 0
-            && strlen(pszCheckHostVersion))
-        {
-            rc = VERR_NOT_SUPPORTED;
-        }
-        VbglR3GuestPropReadValueFree(pszCheckHostVersion);
-    }
-    if (rc == VERR_NOT_SUPPORTED)
-        LogRel(("No host version check performed (disabled)."));
-
-    if (RT_SUCCESS(rc))
-    {
-        /* Look up host version (revision) */
-        rc = VbglR3GuestPropReadValueAlloc(uGuestPropSvcClientID, "/VirtualBox/HostInfo/VBoxVer", ppszHostVersion);
-        if (RT_FAILURE(rc))
-        {
-            LogFlow(("Could not read VBox host version! rc = %d\n", rc));
-        }
-        else
-        {
-            LogFlow(("Host version: %s\n", *ppszHostVersion));
-
-            /* Look up guest version */
-            rc = VbglR3GetAdditionsVersion(ppszGuestVersion, NULL /* Revision */);
-            if (RT_SUCCESS(rc))
-            {
-                LogFlow(("Additions version: %s\n", *ppszGuestVersion));
-
-                /* Look up last informed host version */
-                char szVBoxHostVerLastChecked[32];
-#ifdef RT_OS_WINDOWS
-                HKEY hKey;
-                LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Sun\\VirtualBox Guest Additions", 0, KEY_READ, &hKey);
-                if (lRet == ERROR_SUCCESS)
-                {
-                    DWORD dwType;
-                    DWORD dwSize = sizeof(szVBoxHostVerLastChecked);
-                    lRet = RegQueryValueEx(hKey, "HostVerLastChecked", NULL, &dwType, (BYTE*)szVBoxHostVerLastChecked, &dwSize);
-                    if (lRet != ERROR_SUCCESS && lRet != ERROR_FILE_NOT_FOUND)
-                        LogFlow(("Could not read HostVerLastChecked! Error = %ld\n", lRet));
-                    RegCloseKey(hKey);
-                }
-                else if (lRet != ERROR_FILE_NOT_FOUND)
-                {
-                    LogFlow(("Could not open registry key! Error = %ld\n", lRet));
-                    rc = RTErrConvertFromWin32(lRet);
-                }
-#else
-
-#endif
-                /* Compare both versions and prepare message */
-                if (   RT_SUCCESS(rc)
-                    && strcmp(*ppszHostVersion, szVBoxHostVerLastChecked) != 0        /* Make sure we did not process this host version already */
-                    && VbglR3HostVersionCompare(*ppszHostVersion, *ppszGuestVersion) == 1)     /* Is host version greater than guest add version? */
-                {
-                    LogFlow(("Update found."));
-                }
-                else rc = VERR_VERSION_MISMATCH; /* No update found */
-            }
-        }
-    }
-
-    if (RT_FAILURE(rc))
-    {
-        if (*ppszHostVersion)
-            VbglR3GuestPropReadValueFree(*ppszHostVersion);
-        if (*ppszGuestVersion)
-            VbglR3GuestPropReadValueFree(*ppszGuestVersion);
-    }
-    return rc == VINF_SUCCESS ? true : false;
-}
-
-
-/** @todo Docs */
-VBGLR3DECL(int) VbglR3HostVersionStore(const char* pszVer)
-{
-    int rc;
-    uint32_t uGuestPropSvcClientID;
-
-    rc = VbglR3GuestPropConnect(&uGuestPropSvcClientID);
-    if (RT_FAILURE(rc))
-    {
-        LogFlow(("Failed to connect to the guest property service! Error: %d\n", rc));
-    }
-    else
-    {
-#ifdef RT_OS_WINDOWS
-        HKEY hKey;
-        long lRet;
-        lRet = RegCreateKeyEx (HKEY_LOCAL_MACHINE,
-                               "SOFTWARE\\Sun\\VirtualBox Guest Additions",
-                               0,           /* Reserved */
-                               NULL,        /* lpClass [in, optional] */
-                               0,           /* dwOptions [in] */
-                               KEY_WRITE,
-                               NULL,        /* lpSecurityAttributes [in, optional] */
-                               &hKey,
-                               NULL);       /* lpdwDisposition [out, optional] */
-        if (lRet == ERROR_SUCCESS)
-        {
-            lRet = RegSetValueEx(hKey, "HostVerLastChecked", 0, REG_SZ, (BYTE*)pszVer, (DWORD)(strlen(pszVer)*sizeof(char)));
-            if (lRet != ERROR_SUCCESS)
-                LogFlow(("Could not write HostVerLastChecked! Error = %ld\n", lRet));
-            RegCloseKey(hKey);
-        }
-        else
-            LogFlow(("Could not open registry key! Error = %ld\n", lRet));
-    
-        if (lRet != ERROR_SUCCESS)
-            rc = RTErrConvertFromWin32(lRet);
-#else
-#endif
-    }
-    return rc;
-}
Index: /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibMisc.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibMisc.cpp	(revision 23844)
+++ /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibMisc.cpp	(revision 23845)
@@ -26,4 +26,5 @@
 #include <iprt/mem.h>
 #include <VBox/log.h>
+
 #include "VBGLR3Internal.h"
 
@@ -193,64 +194,2 @@
 }
 
-
-/** @todo Docs */
-VBGLR3DECL(int) VbglR3GetAdditionsVersion(char **ppszVer, char **ppszRev)
-{
-    int rc;
-#ifdef RT_OS_WINDOWS
-    HKEY hKey;
-    LONG r;
-
-    /* Check the new path first. */
-    r = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Sun\\VirtualBox Guest Additions", 0, KEY_READ, &hKey);
-# ifdef RT_ARCH_AMD64
-    if (r != ERROR_SUCCESS)
-    {
-        /* Check Wow6432Node (for new entries). */
-        r = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Wow6432Node\\Sun\\VirtualBox Guest Additions", 0, KEY_READ, &hKey);
-    }
-# endif
-
-    /* Still no luck? Then try the old xVM paths ... */
-    if (FAILED(r))
-    {
-        r = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Sun\\xVM VirtualBox Guest Additions", 0, KEY_READ, &hKey);
-# ifdef RT_ARCH_AMD64
-        if (r != ERROR_SUCCESS)
-        {
-            /* Check Wow6432Node (for new entries). */
-            r = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Wow6432Node\\Sun\\xVM VirtualBox Guest Additions", 0, KEY_READ, &hKey);
-        }
-# endif
-    }
-
-    /* Did we get something worth looking at? */
-    if (SUCCEEDED(r))
-    {
-        /* Version. */
-        DWORD dwType;
-        DWORD dwSize = 32;
-        char *pszVer = (char*)RTMemAlloc(dwSize);
-        if (pszVer)
-        {
-            if (ERROR_SUCCESS == RegQueryValueEx(hKey, "Version", NULL, &dwType, (BYTE*)(LPCTSTR)pszVer, &dwSize))
-                *ppszVer = pszVer;
-        }
-        /* Revision. */
-        if (ppszRev)
-        {
-            dwSize = 32;
-            char *pszRev = (char*)RTMemAlloc(dwSize);
-            if (ERROR_SUCCESS == RegQueryValueEx(hKey, "Revision", NULL, &dwType, (BYTE*)(LPCTSTR)pszRev, &dwSize))
-                *ppszRev = pszRev;
-        }
-    }
-    rc = RTErrConvertFromWin32(r);
-
-    if (NULL != hKey)
-        RegCloseKey(hKey);
-#else
-    rc = VERR_NOT_IMPLEMENTED;
-#endif /* RT_OS_WINDOWS */
-    return rc;
-}
Index: /trunk/src/VBox/Additions/x11/VBoxClient/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Additions/x11/VBoxClient/Makefile.kmk	(revision 23844)
+++ /trunk/src/VBox/Additions/x11/VBoxClient/Makefile.kmk	(revision 23845)
@@ -30,7 +30,4 @@
 VBoxClient_TEMPLATE = VBOXGUESTR3CPPEXE
 VBoxClient_DEFS += VBOX_X11_CLIPBOARD VBOX_WITH_HGCM
-ifdef VBOX_WITH_DBUS
- VBoxClient_DEFS += VBOX_WITH_DBUS
-endif
 VBoxClient_DEFS.linux += _GNU_SOURCE
 VBoxClient_SOURCES = \
@@ -65,8 +62,5 @@
 	Xext Xmu
 endif
-ifdef VBOX_WITH_GUEST_PROPS
- VBoxClient_SOURCES += hostversion.cpp
- VBoxClient_DEFS += VBOX_WITH_GUEST_PROPS
-endif
+
 #
 # Link aginst libstdc++.a. (http://www.trilithium.com/johan/2005/06/static-libstdc/).
Index: /trunk/src/VBox/Additions/x11/VBoxClient/VBoxClient.h
===================================================================
--- /trunk/src/VBox/Additions/x11/VBoxClient/VBoxClient.h	(revision 23844)
+++ /trunk/src/VBox/Additions/x11/VBoxClient/VBoxClient.h	(revision 23845)
@@ -46,5 +46,4 @@
 extern Service *GetSeamlessService();
 extern Service *GetDisplayService();
-extern Service *GetHostVersionService();
 
 extern void CleanUp();
Index: /trunk/src/VBox/Additions/x11/VBoxClient/main.cpp
===================================================================
--- /trunk/src/VBox/Additions/x11/VBoxClient/main.cpp	(revision 23844)
+++ /trunk/src/VBox/Additions/x11/VBoxClient/main.cpp	(revision 23845)
@@ -136,5 +136,4 @@
     RTPrintf("Start the VirtualBox X Window System guest services.\n\n");
     RTPrintf("Options:\n");
-    RTPrintf("  --checkhostversion      checks for a new VirtualBox host version\n");
     RTPrintf("  --clipboard      start the shared clipboard service\n");
     RTPrintf("  --display     start the display management service\n");
@@ -191,13 +190,4 @@
                 fSuccess = false;
         }
-#ifdef VBOX_WITH_GUEST_PROPS
-        else if (!strcmp(argv[i], "--checkhostversion"))
-        {
-            if (g_pService == NULL)
-                g_pService = VBoxClient::GetHostVersionService();
-            else
-                fSuccess = false;
-        }
-#endif
         else if (!strcmp(argv[i], "-h") || !strcmp(argv[i], "--help"))
         {
Index: /trunk/src/VBox/Main/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Main/Makefile.kmk	(revision 23844)
+++ /trunk/src/VBox/Main/Makefile.kmk	(revision 23845)
@@ -336,4 +336,8 @@
 	linux/HostHardwareLinux.cpp
 
+ifdef VBOX_WITH_DBUS
+ VBoxSVC_SOURCES.linux += linux/vbox-dbus.cpp
+endif
+
 VBoxSVC_SOURCES.solaris = \
 	linux/vbox-libhal.cpp \
Index: /trunk/src/VBox/Main/linux/HostHardwareLinux.cpp
===================================================================
--- /trunk/src/VBox/Main/linux/HostHardwareLinux.cpp	(revision 23844)
+++ /trunk/src/VBox/Main/linux/HostHardwareLinux.cpp	(revision 23845)
@@ -31,7 +31,4 @@
 
 #include <VBox/log.h>
-# ifdef VBOX_WITH_DBUS
-#  include <VBox/dbus.h>
-# endif
 
 #include <iprt/dir.h>
@@ -57,4 +54,7 @@
 # include <linux/fd.h>
 # include <linux/major.h>
+# ifdef VBOX_WITH_DBUS
+#  include <vbox-dbus.h>
+# endif
 # include <errno.h>
 # include <scsi/scsi.h>
@@ -1025,5 +1025,5 @@
 #ifdef VBOX_WITH_DBUS
         if (   RT_SUCCESS(rc)
-            && RT_SUCCESS(RTDBusLoadLib())
+            && RT_SUCCESS(VBoxLoadDBusLib())
             && (!success || testing()))
             rc = getUSBDeviceInfoFromHal(&mDeviceList, &halSuccess);
@@ -1070,5 +1070,5 @@
 
     mContext = new Context;
-    if (RT_SUCCESS(RTDBusLoadLib()))
+    if (RT_SUCCESS(VBoxLoadDBusLib()))
     {
         for (unsigned i = 0; RT_SUCCESS(rc) && i < 5 && !mContext->mConnection; ++i)
Index: /trunk/src/VBox/Main/testcase/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Main/testcase/Makefile.kmk	(revision 23844)
+++ /trunk/src/VBox/Main/testcase/Makefile.kmk	(revision 23845)
@@ -125,5 +125,6 @@
 tstHostHardwareLinux_SOURCES   = \
 	tstHostHardwareLinux.cpp \
-	../linux/HostHardwareLinux.cpp
+	../linux/HostHardwareLinux.cpp \
+	../linux/vbox-dbus.cpp
 tstHostHardwareLinux_INCS      = . ../include
 tstHostHardwareLinux_DEFS      = \
Index: /trunk/src/VBox/Runtime/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Runtime/Makefile.kmk	(revision 23844)
+++ /trunk/src/VBox/Runtime/Makefile.kmk	(revision 23845)
@@ -372,8 +372,4 @@
 	common/err/errmsgxpcom.cpp
 endif
-if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris)
-RuntimeR3_SOURCES += \
-	$(if $(VBOX_WITH_DBUS),VBox/dbus.cpp,)
-endif
 
 RuntimeR3_SOURCES.win = \
