Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrl.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrl.cpp	(revision 29548)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrl.cpp	(revision 29549)
@@ -64,8 +64,8 @@
 {
     RTPrintf("VBoxManage guestcontrol     execute <vmname>|<uuid>\n"
-             "                            <path to program> [--arguments \"<arguments>\"]\n"
+             "                            <path to program> --username <name> --password <password>\n"
+             "                            [--arguments \"<arguments>\"]\n"
              "                            [--environment \"<NAME>=<VALUE> [<NAME>=<VALUE>]\"]\n"
-             "                            [--flags <flags>] [--timeout <msec>]\n"
-             "                            [--username <name> [--password <password>]]\n"
+             "                            [--flags <flags>] [--timeout <msec>]\n"             
              "                            [--verbose] [--wait-for exit,stdout,stderr||]\n"
              "\n");
@@ -239,11 +239,11 @@
         return errorSyntax(USAGE_GUESTCONTROL, "Incorrect parameters");
 
-    /* If a password was specified, check if we also got a user name. */
-    if (   !Utf8Password.isEmpty()
-        &&  Utf8UserName.isEmpty())
-    {
+    if (Utf8UserName.isEmpty())
         return errorSyntax(USAGE_GUESTCONTROL,
-                           "No user name for password specified!");
-    }
+                           "No user name specified!");
+
+    if (Utf8Password.isEmpty())
+        return errorSyntax(USAGE_GUESTCONTROL,
+                           "No password specified!");
 
     /* lookup VM. */
Index: /trunk/src/VBox/Main/GuestImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/GuestImpl.cpp	(revision 29548)
+++ /trunk/src/VBox/Main/GuestImpl.cpp	(revision 29549)
@@ -735,9 +735,11 @@
     CheckComArgStrNotEmptyOrNull(aCommand);
     CheckComArgOutPointerValid(aPID);
+    CheckComArgStrNotEmptyOrNull(aUserName); /* Do not allow anonymous executions (with system rights). */
+    CheckComArgStrNotEmptyOrNull(aPassword);
     CheckComArgOutPointerValid(aProgress);
 
     AutoCaller autoCaller(this);
-    if (FAILED(autoCaller.rc())) return autoCaller.rc(); 
-    
+    if (FAILED(autoCaller.rc())) return autoCaller.rc();
+
     if (aFlags != 0) /* Flags are not supported at the moment. */
         return E_INVALIDARG;
