Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDefs.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDefs.cpp	(revision 46725)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDefs.cpp	(revision 46726)
@@ -47,4 +47,5 @@
 const char* UIDefs::GUI_HideFromManager = "GUI/HideFromManager";
 const char* UIDefs::GUI_PreventReconfiguration = "GUI/PreventReconfiguration";
+const char* UIDefs::GUI_PreventSnapshotOperations = "GUI/PreventSnapshotOperations";
 const char* UIDefs::GUI_HideDetails = "GUI/HideDetails";
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDefs.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDefs.h	(revision 46725)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDefs.h	(revision 46726)
@@ -119,4 +119,5 @@
     extern const char* GUI_HideFromManager;
     extern const char* GUI_PreventReconfiguration;
+    extern const char* GUI_PreventSnapshotOperations;
     extern const char* GUI_HideDetails;
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 46725)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 46726)
@@ -3721,4 +3721,25 @@
     /* 'true' if guest-screen auto-mounting approved by the extra-data: */
     return isApprovedByExtraData(machine, GUI_AutomountGuestScreens);
+}
+
+/* static */
+bool VBoxGlobal::shouldWeAllowSnapshotOperations(CMachine &machine,
+                                                 bool fIncludingSanityCheck /*= true*/)
+{
+    if (fIncludingSanityCheck)
+    {
+        /* 'false' for null machines,
+         * we can't operate snapshot in that case: */
+        if (machine.isNull())
+            return false;
+
+        /* 'false' for inaccessible machines,
+         * we can't operate snapshot in that case: */
+        if (!machine.GetAccessible())
+            return false;
+    }
+
+    /* 'true' if snapshot operations are not restricted by the extra-data: */
+    return !isApprovedByExtraData(machine, GUI_PreventSnapshotOperations);
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h	(revision 46725)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h	(revision 46726)
@@ -383,4 +383,5 @@
                                     bool fIncludingMachineGeneralCheck = false);
     static bool shouldWeAutoMountGuestScreens(CMachine &machine, bool fIncludingSanityCheck = true);
+    static bool shouldWeAllowSnapshotOperations(CMachine &machine, bool fIncludingSanityCheck = true);
     static QList<IndicatorType> restrictedStatusBarIndicators(CMachine &machine);
     static QList<MachineCloseAction> restrictedMachineCloseActions(CMachine &machine);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.cpp	(revision 46725)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.cpp	(revision 46726)
@@ -33,4 +33,5 @@
 #include "UIImageTools.h"
 #include "UINetworkManager.h"
+#include "VBoxGlobal.h"
 
 /* COM includes: */
@@ -98,8 +99,9 @@
 };
 
-UIMachineMenuBar::UIMachineMenuBar()
+UIMachineMenuBar::UIMachineMenuBar(const CMachine &machine)
     /* On the Mac we add some items only the first time, cause otherwise they
      * will be merged more than once to the application menu by Qt. */
     : m_fIsFirstTime(true)
+    , m_machine(machine)
 {
 }
@@ -195,5 +197,8 @@
     /* Machine submenu: */
     pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Simple_SettingsDialog));
-    pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Simple_TakeSnapshot));
+    if (vboxGlobal().shouldWeAllowSnapshotOperations(m_machine))
+        pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Simple_TakeSnapshot));
+    else
+        gActionPool->action(UIActionIndexRuntime_Simple_TakeSnapshot)->setEnabled(false);
     pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Simple_TakeScreenshot));
     pMenu->addAction(gActionPool->action(UIActionIndexRuntime_Simple_InformationDialog));
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.h	(revision 46725)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.h	(revision 46726)
@@ -26,4 +26,8 @@
 #include <QList>
 
+/* COM includes: */
+#include "COMEnums.h"
+#include "CMachine.h"
+
 /* Global forwards */
 class QMenu;
@@ -33,5 +37,6 @@
 {
 public:
-    UIMachineMenuBar();
+
+    UIMachineMenuBar(const CMachine &machine);
 
     QMenu* createMenu(UIMainMenuType fOptions = UIMainMenuType_All);
@@ -50,4 +55,5 @@
 
     bool m_fIsFirstTime;
+    CMachine m_machine;
 };
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 46725)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 46726)
@@ -893,5 +893,5 @@
 void UISession::prepareMenuPool()
 {
-    m_pMenuPool = new UIMachineMenuBar;
+    m_pMenuPool = new UIMachineMenuBar(session().GetMachine());
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/VBoxSnapshotsWgt.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/VBoxSnapshotsWgt.cpp	(revision 46725)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/VBoxSnapshotsWgt.cpp	(revision 46726)
@@ -340,4 +340,5 @@
     , mTakeSnapshotAction (new QAction (mCurStateActionGroup))
     , mCloneSnapshotAction(new QAction(mCurStateActionGroup))
+    , m_fShapshotOperationsAllowed(false)
 {
     /* Apply UI decorations */
@@ -438,4 +439,5 @@
         mMachineId = QString::null;
         mSessionState = KSessionState_Null;
+        m_fShapshotOperationsAllowed = false;
     }
     else
@@ -443,4 +445,5 @@
         mMachineId = aMachine.GetId();
         mSessionState = aMachine.GetSessionState();
+        m_fShapshotOperationsAllowed = vboxGlobal().shouldWeAllowSnapshotOperations(mMachine);
     }
 
@@ -509,6 +512,6 @@
 
     /* Enable/disable deleting snapshot */
-    mDeleteSnapshotAction->setEnabled (   canTakeDeleteSnapshot
-                                       && mCurSnapshotItem && item && !item->isCurrentStateItem());
+    mDeleteSnapshotAction->setEnabled (m_fShapshotOperationsAllowed &&
+                                       canTakeDeleteSnapshot && mCurSnapshotItem && item && !item->isCurrentStateItem());
 
     /* Enable/disable the details action regardless of the session state */
@@ -516,7 +519,7 @@
 
     /* Enable/disable taking snapshots */
-    mTakeSnapshotAction->setEnabled (   (   canTakeDeleteSnapshot
-                                         && mCurSnapshotItem && item && item->isCurrentStateItem())
-                                     || (item && !mCurSnapshotItem));
+    mTakeSnapshotAction->setEnabled (m_fShapshotOperationsAllowed &&
+                                     ((canTakeDeleteSnapshot && mCurSnapshotItem && item && item->isCurrentStateItem()) ||
+                                      (item && !mCurSnapshotItem)));
 
     /* Enable/disable cloning snapshots */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/VBoxSnapshotsWgt.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/VBoxSnapshotsWgt.h	(revision 46725)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/VBoxSnapshotsWgt.h	(revision 46726)
@@ -109,4 +109,6 @@
 
     QTimer          mAgeUpdateTimer;
+
+    bool            m_fShapshotOperationsAllowed;
 };
 
