Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp	(revision 46585)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp	(revision 46586)
@@ -62,4 +62,5 @@
 #include "CExtPackFile.h"
 #include "CHostNetworkInterface.h"
+#include "CVRDEServer.h"
 #ifdef VBOX_WITH_DRAG_AND_DROP
 # include "CGuest.h"
@@ -1978,4 +1979,13 @@
              .arg(strDevice, strMachineName),
           formatErrorInfo(errorInfo));
+}
+
+void UIMessageCenter::cannotToggleVRDEServer(const CVRDEServer &server, const QString &strMachineName, bool fEnable)
+{
+    error(0, MessageType_Error,
+          fEnable ?
+              tr("Failed to enable the remote desktop server for the virtual machine <b>%1</b>.").arg(strMachineName) :
+              tr("Failed to disable the remote desktop server for the virtual machine <b>%1</b>.").arg(strMachineName),
+          formatErrorInfo(server));
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h	(revision 46585)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h	(revision 46586)
@@ -298,4 +298,5 @@
     void cannotDetachUSBDevice(const CConsole &console, const QString &strDevice) const;
     void cannotDetachUSBDevice(const CVirtualBoxErrorInfo &errorInfo, const QString &strDevice, const QString &strMachineName) const;
+    void cannotToggleVRDEServer(const CVRDEServer &server, const QString &strMachineName, bool fEnable);
     void remindAboutGuestAdditionsAreNotActive() const;
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 46585)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 46586)
@@ -1892,8 +1892,18 @@
 void UIMachineLogic::sltSwitchVrde(bool fOn)
 {
-    /* Enable VRDE server if possible: */
-    CVRDEServer server = session().GetMachine().GetVRDEServer();
+    /* Prepare variables: */
+    CMachine machine = session().GetMachine();
+    CVRDEServer server = machine.GetVRDEServer();
     AssertMsg(!server.isNull(), ("VRDE server should not be null!\n"));
+
+    /* Toggle VRDE server state: */
     server.SetEnabled(fOn);
+    if (!server.isOk())
+    {
+        /* Notify about the error: */
+        msgCenter().cannotToggleVRDEServer(server, machine.GetName(), fOn);
+        /* Make sure action is updated! */
+        uisession()->updateStatusVRDE();
+    }
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h	(revision 46585)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h	(revision 46586)
@@ -168,4 +168,7 @@
     void setFrameBuffer(ulong uScreenId, UIFrameBuffer* pFrameBuffer);
 
+    /* Temporary API: VRDE stuff: */
+    void updateStatusVRDE() { sltVRDEChange(); }
+
 signals:
 
