Index: /trunk/src/VBox/HostServices/SharedFolders/vbsfpathabs.cpp
===================================================================
--- /trunk/src/VBox/HostServices/SharedFolders/vbsfpathabs.cpp	(revision 78089)
+++ /trunk/src/VBox/HostServices/SharedFolders/vbsfpathabs.cpp	(revision 78090)
@@ -97,4 +97,6 @@
 {
 #if defined(RT_OS_WINDOWS)
+    /** @todo This code is not needed in 6.0 and later as IPRT translates paths
+     *        to \\.\ format if they're too long.  */
     const char *pszPathStart = pszRoot? pszRoot: pszPath;
 
@@ -182,4 +184,5 @@
 
     /* Fallback for the common paths. */
-    return RTPathAbsEx(pszRoot, pszPath, pszAbsPath, cbAbsPath);
+
+    return RTPathAbsExEx(pszRoot, pszPath, RTPATH_STR_F_STYLE_HOST, pszAbsPath, &cbAbsPath);
 }
Index: /trunk/src/VBox/Main/src-all/SharedFolderImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-all/SharedFolderImpl.cpp	(revision 78089)
+++ /trunk/src/VBox/Main/src-all/SharedFolderImpl.cpp	(revision 78090)
@@ -283,8 +283,7 @@
         /* Check whether the path is full (absolute) */
         char hostPathFull[RTPATH_MAX];
-        int vrc = RTPathAbsEx(NULL,
-                              hostPath.c_str(),
-                              hostPathFull,
-                              sizeof (hostPathFull));
+        int vrc = RTPathAbs(hostPath.c_str(),
+                            hostPathFull,
+                            sizeof(hostPathFull));
         if (RT_FAILURE(vrc))
             return setErrorBoth(E_INVALIDARG, vrc, tr("Invalid shared folder path: '%s' (%Rrc)"), hostPath.c_str(), vrc);
Index: /trunk/src/VBox/Main/src-client/ConsoleImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/ConsoleImpl.cpp	(revision 78089)
+++ /trunk/src/VBox/Main/src-client/ConsoleImpl.cpp	(revision 78090)
@@ -8664,5 +8664,5 @@
      */
     char szAbsHostPath[RTPATH_MAX];
-    int vrc = RTPathAbsEx(NULL, aData.m_strHostPath.c_str(), szAbsHostPath, sizeof(szAbsHostPath));
+    int vrc = RTPathAbs(aData.m_strHostPath.c_str(), szAbsHostPath, sizeof(szAbsHostPath));
     if (RT_FAILURE(vrc))
         return setErrorBoth(E_INVALIDARG, vrc, tr("Invalid shared folder path: '%s' (%Rrc)"), aData.m_strHostPath.c_str(), vrc);
Index: /trunk/src/VBox/Main/src-server/MachineImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/MachineImpl.cpp	(revision 78089)
+++ /trunk/src/VBox/Main/src-server/MachineImpl.cpp	(revision 78090)
@@ -7258,8 +7258,9 @@
 
     strSettingsDir.stripFilename();
-    char folder[RTPATH_MAX];
-    int vrc = RTPathAbsEx(strSettingsDir.c_str(), strPath.c_str(), folder, sizeof(folder));
+    char szFolder[RTPATH_MAX];
+    size_t cbFolder = sizeof(szFolder);
+    int vrc = RTPathAbsExEx(strSettingsDir.c_str(), strPath.c_str(), RTPATH_STR_F_STYLE_HOST, szFolder, &cbFolder);
     if (RT_SUCCESS(vrc))
-        aResult = folder;
+        aResult = szFolder;
 
     return vrc;
Index: /trunk/src/VBox/Main/src-server/VirtualBoxImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/VirtualBoxImpl.cpp	(revision 78089)
+++ /trunk/src/VBox/Main/src-server/VirtualBoxImpl.cpp	(revision 78090)
@@ -4010,13 +4010,15 @@
     AssertComRCReturn(autoCaller.rc(), VERR_GENERAL_FAILURE);
 
-    /* no need to lock since mHomeDir is const */
-
-    char folder[RTPATH_MAX];
-    int vrc = RTPathAbsEx(m->strHomeDir.c_str(),
-                          strPath.c_str(),
-                          folder,
-                          sizeof(folder));
+    /* no need to lock since strHomeDir is const */
+
+    char szFolder[RTPATH_MAX];
+    size_t cbFolder = sizeof(szFolder);
+    int vrc = RTPathAbsExEx(m->strHomeDir.c_str(),
+                            strPath.c_str(),
+                            RTPATH_STR_F_STYLE_HOST,
+                            szFolder,
+                            &cbFolder);
     if (RT_SUCCESS(vrc))
-        aResult = folder;
+        aResult = szFolder;
 
     return vrc;
Index: /trunk/src/VBox/Runtime/common/path/RTPathAbsEx.cpp
===================================================================
--- /trunk/src/VBox/Runtime/common/path/RTPathAbsEx.cpp	(revision 78089)
+++ /trunk/src/VBox/Runtime/common/path/RTPathAbsEx.cpp	(revision 78090)
@@ -53,5 +53,5 @@
 RTDECL(int) RTPathAbsEx(const char *pszBase, const char *pszPath, char *pszAbsPath, size_t cbAbsPath)
 {
-#if 1
+#if 0
     if (    pszBase
         &&  pszPath
Index: /trunk/src/VBox/Runtime/common/path/RTPathAbsExDup.cpp
===================================================================
--- /trunk/src/VBox/Runtime/common/path/RTPathAbsExDup.cpp	(revision 78089)
+++ /trunk/src/VBox/Runtime/common/path/RTPathAbsExDup.cpp	(revision 78090)
@@ -50,7 +50,29 @@
 {
     char szPath[RTPATH_MAX];
-    int rc = RTPathAbsEx(pszBase, pszPath, szPath, sizeof(szPath));
+    size_t cbPath = sizeof(szPath);
+    int rc = RTPathAbsExEx(pszBase, pszPath, RTPATH_STR_F_STYLE_HOST, szPath, &cbPath);
     if (RT_SUCCESS(rc))
         return RTStrDup(szPath);
+
+    if (rc == VERR_BUFFER_OVERFLOW)
+    {
+        size_t   cbPrevPath = sizeof(szPath);
+        uint32_t cTries = 6;
+        while (cTries-- > 0)
+        {
+            cbPath     = RT_MAX(RT_ALIGN_Z(cbPath + 16, 64), cbPrevPath + 256);
+            cbPrevPath = cbPath;
+            char *pszAbsPath = (char *)RTStrAlloc(cbPath);
+            if (pszAbsPath)
+            {
+                rc = RTPathAbsExEx(pszBase, pszPath, RTPATH_STR_F_STYLE_HOST, pszAbsPath, &cbPath);
+                if (RT_SUCCESS(rc))
+                    return pszAbsPath;
+                RTStrFree(pszAbsPath);
+            }
+            else
+                break;
+        }
+    }
     return NULL;
 }
Index: /trunk/src/VBox/Runtime/generic/RTPathAbs-generic.cpp
===================================================================
--- /trunk/src/VBox/Runtime/generic/RTPathAbs-generic.cpp	(revision 78089)
+++ /trunk/src/VBox/Runtime/generic/RTPathAbs-generic.cpp	(revision 78090)
@@ -40,5 +40,5 @@
 #include "internal/fs.h"
 
-#if 1
+#if 0
 
 static char *rtPathSkipRootSpec(char *pszCur)
Index: /trunk/src/VBox/Runtime/r3/generic/dirrel-r3-generic.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r3/generic/dirrel-r3-generic.cpp	(revision 78089)
+++ /trunk/src/VBox/Runtime/r3/generic/dirrel-r3-generic.cpp	(revision 78090)
@@ -84,5 +84,5 @@
      * This ASSUMES that pThis->pszPath is an absolute path.
      */
-    int rc = RTPathAbsEx(pThis->pszPath, pszRelPath, pszPathDst, cbPathDst);
+    int rc = RTPathAbsExEx(pThis->pszPath, pszRelPath, RTPATH_STR_F_STYLE_HOST, pszPathDst, &cbPathDst);
     if (RT_SUCCESS(rc))
     {
Index: /trunk/src/VBox/Runtime/r3/nt/dirrel-r3-nt.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r3/nt/dirrel-r3-nt.cpp	(revision 78089)
+++ /trunk/src/VBox/Runtime/r3/nt/dirrel-r3-nt.cpp	(revision 78090)
@@ -95,5 +95,5 @@
      * This ASSUMES that pThis->pszPath is an absolute path.
      */
-    int rc = RTPathAbsEx(pThis->pszPath, pszRelPath, pszPathDst, cbPathDst);
+    int rc = RTPathAbsExEx(pThis->pszPath, pszRelPath, RTPATH_STR_F_STYLE_HOST, pszPathDst, &cbPathDst);
     if (RT_SUCCESS(rc))
     {
Index: /trunk/src/VBox/Runtime/testcase/tstRTPath.cpp
===================================================================
--- /trunk/src/VBox/Runtime/testcase/tstRTPath.cpp	(revision 78089)
+++ /trunk/src/VBox/Runtime/testcase/tstRTPath.cpp	(revision 78090)
@@ -267,4 +267,5 @@
 
 
+#if 0
     /*
      * RTPathAbsEx
@@ -398,4 +399,5 @@
         }
     }
+#endif
 
     /*
