Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPUtils.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPUtils.cpp	(revision 54005)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPUtils.cpp	(revision 54006)
@@ -60,5 +60,10 @@
     LOG(("running on version %d.%d, build %d(checked=%d)", major, minor, build, (int)checkedBuild));
 
-    if (major == 6)
+    if (major > 6)
+    {
+        /* Everything newer than Windows 8.1, i.e. Windows 10 with major == 10. */
+        s_WinVersion = WINVERSION_10;
+    }
+    else if (major == 6)
     {
         if (minor >= 4)
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp	(revision 54005)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp	(revision 54006)
@@ -7426,22 +7426,16 @@
         if (major > 6)
         {
-            WARN(("Unknow win version, newer major release, assuming 3D check is required"));
+            /* Windows 10 and newer. */
             f3DRequired = TRUE;
         }
         else if (major == 6)
         {
-            if (minor > 4)
-            {
-                WARN(("Unknow win version, newer minor release, assuming 3D check is required"));
+            if (minor >= 2)
+            {
+                /* Windows 8, 8.1 and 10 preview. */
                 f3DRequired = TRUE;
             }
-            else if (minor >= 2)
-            {
-                LOG(("3D check is required!"));
-                f3DRequired = TRUE;
-            }
             else
             {
-                LOG(("3D is NOT required!"));
                 f3DRequired = FALSE;
             }
@@ -7452,4 +7446,6 @@
             f3DRequired = FALSE;
         }
+
+        LOG(("3D is %srequired!", f3DRequired? "": "NOT "));
 
         Status = STATUS_SUCCESS;
Index: /trunk/src/VBox/Additions/WINNT/Installer/winver.nsh
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Installer/winver.nsh	(revision 54005)
+++ /trunk/src/VBox/Additions/WINNT/Installer/winver.nsh	(revision 54006)
@@ -67,4 +67,12 @@
   StrCmp $R1 '6.1' lbl_winnt_7
   StrCmp $R1 '6.2' lbl_winnt_8
+
+  ; Windows 10 preview 9926 has CurrentVersion == 6.3
+  ; Check Windows 10 registry values
+  ReadRegDWORD $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" "CurrentMajorVersionNumber"
+  ${If} $R0 == "10"
+    Goto lbl_winnt_10
+  ${EndIf}
+
   StrCmp $R1 '6.3' lbl_winnt_8_1
   StrCmp $R1 '6.4' lbl_winnt_10 lbl_error
Index: /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-win.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-win.cpp	(revision 54005)
+++ /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-win.cpp	(revision 54006)
@@ -108,7 +108,10 @@
     ULONG ulBuildNo;
     BOOLEAN fCheckedBuild = PsGetVersion(&ulMajorVer, &ulMinorVer, &ulBuildNo, NULL);
-    LogRelFunc(("Running on Windows NT version %u.%u, build %u\n", ulMajorVer, ulMinorVer, ulBuildNo));
+
+    /* Use RTLogBackdoorPrintf to make sure that this goes to VBox.log */
+    RTLogBackdoorPrintf("VBoxGuest: Windows version %u.%u, build %u\n", ulMajorVer, ulMinorVer, ulBuildNo);
     if (fCheckedBuild)
-        LogRelFunc(("Running on a Windows checked build (debug)!\n"));
+        RTLogBackdoorPrintf("VBoxGuest: Windows checked build\n");
+
 #ifdef DEBUG
     vbgdNtDoTests();
@@ -116,4 +119,15 @@
     switch (ulMajorVer)
     {
+        case 10:
+            switch (ulMinorVer)
+            {
+                case 0:
+                    /* Windows 10 Preview builds starting with 9926. */
+                default:
+                    /* Also everything newer. */
+                    g_enmVbgdNtVer = VBGDNTVER_WIN10;
+                    break;
+            }
+            break;
         case 6: /* Windows Vista or Windows 7 (based on minor ver) */
             switch (ulMinorVer)
@@ -132,9 +146,8 @@
                     break;
                 case 4:
+                    /* Windows 10 Preview builds. */
+                default:
+                    /* Also everything newer. */
                     g_enmVbgdNtVer = VBGDNTVER_WIN10;
-                    break;
-                default:
-                    LogRelFunc(("Unknown version of Windows (%u.%u), refusing!\n", ulMajorVer, ulMinorVer));
-                    rc = STATUS_DRIVER_UNABLE_TO_LOAD;
                     break;
             }
@@ -143,4 +156,5 @@
             switch (ulMinorVer)
             {
+                default:
                 case 2:
                     g_enmVbgdNtVer = VBGDNTVER_WIN2K3;
@@ -152,7 +166,4 @@
                     g_enmVbgdNtVer = VBGDNTVER_WIN2K;
                     break;
-                default:
-                    LogRelFunc(("Unknown version of Windows (%u.%u), refusing!\n", ulMajorVer, ulMinorVer));
-                    rc = STATUS_DRIVER_UNABLE_TO_LOAD;
             }
             break;
@@ -161,9 +172,17 @@
             break;
         default:
-            if (ulMajorVer < 4)
-                LogRelFunc(("At least Windows NT4 required! (%u.%u)\n", ulMajorVer, ulMinorVer));
+            if (ulMajorVer > 6)
+            {
+                /* "Windows 10 mode" for Windows 8.1+. */
+                g_enmVbgdNtVer = VBGDNTVER_WIN10;
+            }
             else
-                LogRelFunc(("Too new version %u.%u!\n", ulMajorVer, ulMinorVer));
-            rc = STATUS_DRIVER_UNABLE_TO_LOAD;
+            {
+                if (ulMajorVer < 4)
+                    LogRelFunc(("At least Windows NT4 required! (%u.%u)\n", ulMajorVer, ulMinorVer));
+                else
+                    LogRelFunc(("Unknown version %u.%u!\n", ulMajorVer, ulMinorVer));
+                rc = STATUS_DRIVER_UNABLE_TO_LOAD;
+            }
             break;
     }
