Index: /trunk/src/VBox/Runtime/r3/win/ldrNative-win.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r3/win/ldrNative-win.cpp	(revision 46560)
+++ /trunk/src/VBox/Runtime/r3/win/ldrNative-win.cpp	(revision 46561)
@@ -36,7 +36,26 @@
 #include <iprt/err.h>
 #include <iprt/alloca.h>
+#include <iprt/once.h>
 #include <iprt/string.h>
 #include "internal/ldr.h"
 
+static RTONCE g_Once = RTONCE_INITIALIZER;
+
+static DECLCALLBACK(int) rtldrOnceSetDllDirectory(void *pvUser)
+{
+    HMODULE hmod = GetModuleHandle(TEXT("kernel32.dll"));
+    if (hmod)
+    {
+        typedef BOOLEAN (WINAPI *PFNSETDLLDIRECTORY)(LPCWSTR);
+        PFNSETDLLDIRECTORY pfn = (PFNSETDLLDIRECTORY)GetProcAddress(hmod, "SetDllDirectoryW");
+        if (pfn)
+        {
+            BOOL fOk = pfn(L"");
+            if (!fOk)
+                return RTErrConvertFromWin32(GetLastError());
+        }
+    }
+    return VINF_SUCCESS;
+}
 
 int rtldrNativeLoad(const char *pszFilename, uintptr_t *phHandle, uint32_t fFlags, PRTERRINFO pErrInfo)
@@ -60,4 +79,15 @@
 
     /*
+     * Don't allow loading DLLs from the current directory.
+     */
+#if 0
+    int rc = RTOnce(&g_Once, rtldrOnceSetDllDirectory, NULL);
+    if (RT_FAILURE(rc))
+        return rc;
+#else
+    int rc = VINF_SUCCESS;
+#endif
+
+    /*
      * Attempt load.
      */
@@ -73,5 +103,5 @@
      */
     DWORD dwErr = GetLastError();
-    int   rc    = RTErrConvertFromWin32(dwErr);
+    rc = RTErrConvertFromWin32(dwErr);
     return RTErrInfoSetF(pErrInfo, rc, "GetLastError=%u", dwErr);
 }
