Index: /trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControlExec.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControlExec.cpp	(revision 33761)
+++ /trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControlExec.cpp	(revision 33762)
@@ -1096,8 +1096,16 @@
     AssertPtrReturn(ppapszArgv, VERR_INVALID_PARAMETER);
 
+    bool fUseToolbox = false;
+    if (RTStrStr(papszArgs[0], "vbox_") == papszArgs[0])
+        fUseToolbox = true;
+
+    /* Skip argv[0] (= file name) if we don't run an internal
+     * VBoxService toolbox command - we already have a resolved one in pszFileName. */
     char *pszArgs;
-    int rc = RTGetOptArgvToString(&pszArgs, papszArgs,
+    int rc = RTGetOptArgvToString(&pszArgs,
+                                  fUseToolbox ? papszArgs : &papszArgs[1],
                                   RTGETOPTARGV_CNV_QUOTE_MS_CRT); /* RTGETOPTARGV_CNV_QUOTE_BOURNE_SH */
-    if (RT_SUCCESS(rc))
+    if (   RT_SUCCESS(rc)
+        && pszArgs)
     {
         /*
@@ -1119,4 +1127,10 @@
         }
         RTStrFree(pszArgs);
+    }
+    else /* No arguments given, just use the resolved file name as argv[0]. */
+    {
+        int iNumArgsIgnored;
+        rc = RTGetOptArgvFromString(ppapszArgv, &iNumArgsIgnored,
+                                    pszFileName, NULL /* Use standard separators. */);
     }
     return rc;
