Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 54150)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 54151)
@@ -1887,4 +1887,8 @@
 void UIExtraDataManager::setExtraDataString(const QString &strKey, const QString &strValue, const QString &strID /* = GlobalID */)
 {
+    /* Make sure VBoxSVC is available: */
+    if (!vboxGlobal().isVBoxSVCAvailable())
+        return;
+
     /* Hot-load machine extra-data map if necessary: */
     if (strID != GlobalID && !m_data.contains(strID))
@@ -1937,4 +1941,8 @@
 void UIExtraDataManager::setExtraDataStringList(const QString &strKey, const QStringList &strValue, const QString &strID /* = GlobalID */)
 {
+    /* Make sure VBoxSVC is available: */
+    if (!vboxGlobal().isVBoxSVCAvailable())
+        return;
+
     /* Hot-load machine extra-data map if necessary: */
     if (strID != GlobalID && !m_data.contains(strID))
@@ -3637,5 +3645,5 @@
 {
     /* Register Main event-listener:  */
-    const CVirtualBox &vbox = vboxGlobal().virtualBox();
+    const CVirtualBox vbox = vboxGlobal().virtualBox();
     ComObjPtr<UIMainEventListenerImpl> pListener;
     pListener.createObject();
@@ -3668,6 +3676,10 @@
 void UIExtraDataManager::cleanupMainEventListener()
 {
-    /* Unregister Main event-listener:  */
-    const CVirtualBox &vbox = vboxGlobal().virtualBox();
+    /* Make sure VBoxSVC is available: */
+    if (!vboxGlobal().isVBoxSVCAvailable())
+        return;
+
+    /* Unregister Main event-listener: */
+    const CVirtualBox vbox = vboxGlobal().virtualBox();
     vbox.GetEventSource().UnregisterListener(m_listener);
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 54150)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 54151)
@@ -427,4 +427,11 @@
     /* Notify other listeners: */
     emit sigNotifyAbout3DOverlayVisibilityChange(fVisible);
+}
+
+void UIMachineLogic::sltHandleVBoxSVCAvailabilityChange()
+{
+    /* Handle the VBoxSVC availability change: */
+    if (!vboxGlobal().isVBoxSVCAvailable())
+        powerOff(false);
 }
 
@@ -828,4 +835,8 @@
 void UIMachineLogic::prepareSessionConnections()
 {
+    /* We should watch for the VBoxSVC availability changes: */
+    connect(&vboxGlobal(), SIGNAL(sigVBoxSVCAvailabilityChange()),
+            this, SLOT(sltHandleVBoxSVCAvailabilityChange()));
+
     /* We should check for entering/exiting requested modes: */
     connect(uisession(), SIGNAL(sigInitialized()), this, SLOT(sltCheckForRequestedVisualStateType()));
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h	(revision 54150)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h	(revision 54151)
@@ -144,4 +144,7 @@
 protected slots:
 
+    /** Handles the VBoxSVC availability change. */
+    void sltHandleVBoxSVCAvailabilityChange();
+
     /** Checks if some visual-state type was requested. */
     virtual void sltCheckForRequestedVisualStateType() {}
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 54150)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 54151)
@@ -1464,5 +1464,5 @@
 
     /* Close session: */
-    if (!m_session.isNull())
+    if (!m_session.isNull() && vboxGlobal().isVBoxSVCAvailable())
     {
         m_session.UnlockMachine();
