Index: /trunk/src/VBox/Main/src-client/HGCM.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/HGCM.cpp	(revision 48228)
+++ /trunk/src/VBox/Main/src-client/HGCM.cpp	(revision 48229)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2006-2011 Oracle Corporation
+ * Copyright (C) 2006-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -255,5 +255,5 @@
  *  @return VBox code
  */
-int HGCMService::loadServiceDLL (void)
+int HGCMService::loadServiceDLL(void)
 {
     LogFlowFunc(("m_pszSvcLibrary = %s\n", m_pszSvcLibrary));
@@ -265,7 +265,12 @@
 
     RTERRINFOSTATIC ErrInfo;
-    RTErrInfoInitStatic (&ErrInfo);
-
-    int rc = SUPR3HardenedLdrLoadAppPriv (m_pszSvcLibrary, &m_hLdrMod, RTLDRLOAD_FLAGS_LOCAL, &ErrInfo.Core);
+    RTErrInfoInitStatic(&ErrInfo);
+
+    int rc;
+
+    if (RTPathHasPath(m_pszSvcLibrary))
+        rc = SUPR3HardenedLdrLoadPlugIn(m_pszSvcLibrary, &m_hLdrMod, &ErrInfo.Core);
+    else
+        rc = SUPR3HardenedLdrLoadAppPriv(m_pszSvcLibrary, &m_hLdrMod, RTLDRLOAD_FLAGS_LOCAL, &ErrInfo.Core);
 
     if (RT_SUCCESS(rc))
@@ -275,5 +280,5 @@
         m_pfnLoad = NULL;
 
-        rc = RTLdrGetSymbol (m_hLdrMod, VBOX_HGCM_SVCLOAD_NAME, (void**)&m_pfnLoad);
+        rc = RTLdrGetSymbol(m_hLdrMod, VBOX_HGCM_SVCLOAD_NAME, (void**)&m_pfnLoad);
 
         if (RT_FAILURE(rc) || !m_pfnLoad)
@@ -292,9 +297,9 @@
             RT_ZERO(m_fntable);
 
-            m_fntable.cbSize     = sizeof (m_fntable);
+            m_fntable.cbSize     = sizeof(m_fntable);
             m_fntable.u32Version = VBOX_HGCM_SVC_VERSION;
             m_fntable.pHelpers   = &m_svcHelpers;
 
-            rc = m_pfnLoad (&m_fntable);
+            rc = m_pfnLoad(&m_fntable);
 
             LogFlowFunc(("m_pfnLoad rc = %Rrc\n", rc));
@@ -314,5 +319,5 @@
                     if (m_fntable.pfnUnload)
                     {
-                        m_fntable.pfnUnload (m_fntable.pvService);
+                        m_fntable.pfnUnload(m_fntable.pvService);
                     }
                 }
@@ -329,5 +334,5 @@
     if (RT_FAILURE(rc))
     {
-        unloadServiceDLL ();
+        unloadServiceDLL();
     }
 
@@ -339,9 +344,9 @@
  *  @return VBox code
  */
-void HGCMService::unloadServiceDLL (void)
+void HGCMService::unloadServiceDLL(void)
 {
     if (m_hLdrMod)
     {
-        RTLdrClose (m_hLdrMod);
+        RTLdrClose(m_hLdrMod);
     }
 
