Index: /trunk/src/VBox/Additions/common/VBoxService/VBoxServicePageSharing.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxService/VBoxServicePageSharing.cpp	(revision 30035)
+++ /trunk/src/VBox/Additions/common/VBoxService/VBoxServicePageSharing.cpp	(revision 30036)
@@ -25,4 +25,5 @@
 #include <iprt/mem.h>
 #include <iprt/stream.h>
+#include <iprt/file.h>
 #include <iprt/string.h>
 #include <iprt/semaphore.h>
@@ -404,10 +405,4 @@
                 continue;
 
-            char *pszDot = strrchr(pSystemModules->Modules[i].FullPathName, '.');
-            if (    pszDot
-                &&  (pszDot[1] == 'e' || pszDot[1] == 'E')
-                &&  strcmp(&pSystemModules->Modules[i].FullPathName[pSystemModules->Modules[i].OffsetToFileName], "ntoskrnl.exe"))
-                continue;   /* ignore executables for now. */
-
             /* Found it before? */
             PAVLPVNODECORE pRec = RTAvlPVGet(&pNewTree, pSystemModules->Modules[i].ImageBase);
@@ -432,17 +427,36 @@
                     {
                         VBoxServiceVerbose(1, "Unexpected kernel module name %s\n", pSystemModules->Modules[i].FullPathName);
-                        RTMemFree(pModule);
-                        continue;
+
+                        /* Seen just file names in XP; try to locate the file in the system32 and system32\drivers directories. */
+                        strcat(szFullFilePath, "\\");
+                        strcat(szFullFilePath, pSystemModules->Modules[i].FullPathName);
+                        VBoxServiceVerbose(3, "Unexpected kernel module name try %s\n", szFullFilePath);
+                        if (RTFileExists(szFullFilePath) == false)
+                        {
+                            GetSystemDirectoryA(szFullFilePath, sizeof(szFullFilePath));
+                            strcat(szFullFilePath, "\\drivers\\");
+                            strcat(szFullFilePath, pSystemModules->Modules[i].FullPathName);
+                            VBoxServiceVerbose(3, "Unexpected kernel module name try %s\n", szFullFilePath);
+                            if (RTFileExists(szFullFilePath) == false)
+                            {
+                                VBoxServiceVerbose(1, "Unexpected kernel module name %s\n", pSystemModules->Modules[i].FullPathName);
+                                RTMemFree(pModule);
+                                continue;
+                            }
+                        }
                     }
-
-                    lpPath = strchr(lpPath+1, '\\');
-                    if (!lpPath)
+                    else
                     {
-                        VBoxServiceVerbose(1, "Unexpected kernel module name %s (2)\n", pSystemModules->Modules[i].FullPathName);
-                        RTMemFree(pModule);
-                        continue;
+                        lpPath = strchr(lpPath+1, '\\');
+                        if (!lpPath)
+                        {
+                            VBoxServiceVerbose(1, "Unexpected kernel module name %s (2)\n", pSystemModules->Modules[i].FullPathName);
+                            RTMemFree(pModule);
+                            continue;
+                        }
+
+                        strcat(szFullFilePath, lpPath);
                     }
 
-                    strcat(szFullFilePath, lpPath);
                     strcpy(pModule->Info.szExePath, szFullFilePath);
                     pModule->Info.modBaseAddr = (BYTE *)pSystemModules->Modules[i].ImageBase;
