Index: /trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu_wgl.c
===================================================================
--- /trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu_wgl.c	(revision 39734)
+++ /trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu_wgl.c	(revision 39735)
@@ -157,5 +157,5 @@
     char *pBufPos = pBuf;
     DWORD cbBufRemain = cbBuf, cbTotal = 0;
-    HKEY hKey;
+    HKEY hKey, hSubkey;
     DWORD dwIndex = 0;
     int i;
@@ -191,13 +191,25 @@
         }
 
+        lRc = RegOpenKeyEx(hKey,
+                NameBuf,
+                0, /* reserved*/
+                KEY_READ,
+                &hSubkey);
+        if (ERROR_SUCCESS != lRc)
+        {
+            crDebug("RegOpenKeyEx 2 failed, %d", lRc);
+            RegCloseKey(hKey);
+            return VERR_OPEN_FAILED;
+        }
+
         for (i = 0; i < RT_ELEMENTS(aValueNames); ++i)
         {
             DWORD cbCur = cbBufRemain;
-            lRc = RegGetValueA(hKey, NameBuf, aValueNames[i], RRF_RT_REG_MULTI_SZ,
-                    NULL, /* LPDWORD pdwType */
-                    pBufPos,
-                    &cbCur);
+            lRc = RegQueryValueExA(hSubkey, aValueNames[i], NULL, /* reserved*/
+                    REG_MULTI_SZ,
+                    (PBYTE)pBufPos, &cbCur);
             /* exclude second null termination */
             --cbCur;
+
             if (ERROR_MORE_DATA == lRc)
             {
@@ -222,5 +234,9 @@
             CRASSERT(cbBufRemain < UINT32_MAX/2);
         }
-    }
+
+        RegCloseKey(hSubkey);
+    }
+
+    RegCloseKey(hKey);
 
     if (cbTotal)
