Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp	(revision 54936)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp	(revision 54937)
@@ -2460,5 +2460,5 @@
     const char *errMsg = NULL;
 
-    /* first, try as is (only set bit 31 bit for warnings) */
+    /* First, try as is (only set bit 31 bit for warnings): */
     if (SUCCEEDED_WARNING(rc))
         msg = RTErrCOMGet(rc | 0x80000000);
@@ -2469,9 +2469,8 @@
         errMsg = msg->pszDefine;
 
-#if defined (Q_WS_WIN)
-
+#ifdef Q_WS_WIN
     PCRTWINERRMSG winMsg = NULL;
 
-    /* if not found, try again using RTErrWinGet with masked off top 16bit */
+    /* If not found, try again using RTErrWinGet with masked off top 16bit: */
     if (msg == NULL)
     {
@@ -2481,6 +2480,41 @@
             errMsg = winMsg->pszDefine;
     }
-
-#endif
+#endif /* Q_WS_WIN */
+
+    if (errMsg != NULL && *errMsg != '\0')
+        str.sprintf("%s", errMsg);
+
+    return str;
+}
+
+/* static */
+QString UIMessageCenter::formatRCFull(HRESULT rc)
+{
+    QString str;
+
+    PCRTCOMERRMSG msg = NULL;
+    const char *errMsg = NULL;
+
+    /* First, try as is (only set bit 31 bit for warnings): */
+    if (SUCCEEDED_WARNING(rc))
+        msg = RTErrCOMGet(rc | 0x80000000);
+    else
+        msg = RTErrCOMGet(rc);
+
+    if (msg != NULL)
+        errMsg = msg->pszDefine;
+
+#ifdef Q_WS_WIN
+    PCRTWINERRMSG winMsg = NULL;
+
+    /* If not found, try again using RTErrWinGet with masked off top 16bit: */
+    if (msg == NULL)
+    {
+        winMsg = RTErrWinGet(rc & 0xFFFF);
+
+        if (winMsg != NULL)
+            errMsg = winMsg->pszDefine;
+    }
+#endif /* Q_WS_WIN */
 
     if (errMsg != NULL && *errMsg != '\0')
@@ -2508,5 +2542,5 @@
                    "<tr><td>%1</td><td><tt>%2</tt></td></tr></table>")
                    .arg(tr("Result&nbsp;Code: ", "error info"))
-                   .arg(formatRC(progress.GetResultCode()))
+                   .arg(formatRCFull(progress.GetResultCode()))
                    .prepend("<!--EOM-->") /* move to details */;
 }
@@ -2729,5 +2763,5 @@
             formatted += QString("<tr><td>%1</td><td><tt>%2</tt></td></tr>")
                 .arg(tr("Result&nbsp;Code: ", "error info"))
-                .arg(formatRC(info.resultCode()));
+                .arg(formatRCFull(info.resultCode()));
         }
 
@@ -2760,5 +2794,5 @@
         formatted += QString("<tr><td>%1</td><td><tt>%2</tt></td></tr>")
             .arg(tr("Callee&nbsp;RC: ", "error info"))
-            .arg(formatRC(wrapperRC));
+            .arg(formatRCFull(wrapperRC));
     }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h	(revision 54936)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h	(revision 54937)
@@ -360,4 +360,5 @@
     /* API: Static helpers: */
     static QString formatRC(HRESULT rc);
+    static QString formatRCFull(HRESULT rc);
     static QString formatErrorInfo(const CProgress &progress);
     static QString formatErrorInfo(const COMErrorInfo &info, HRESULT wrapperRC = S_OK);
