diff --git a/admin_views.info b/admin_views.info
index c1a47af..90f2a84 100644
--- a/admin_views.info
+++ b/admin_views.info
@@ -4,5 +4,8 @@ package = Administration
 core = 7.x
 dependencies[] = views
 dependencies[] = views_bulk_operations
+
 files[] = plugins/views_plugin_display_system.inc
+files[] = plugins/views_plugin_access_menu.inc
+
 files[] = tests/admin_views.test
diff --git a/admin_views.views.inc b/admin_views.views.inc
index 7ae3793..d85671e 100644
--- a/admin_views.views.inc
+++ b/admin_views.views.inc
@@ -27,8 +27,16 @@ function admin_views_views_plugins() {
         'admin' => t('System'),
       ),
     ),
+    'access' => array(
+      'menu' => array(
+        'title' => t('Menu system path'),
+        'help' => t('Access will be granted based on the original system path.'),
+        'handler' => 'views_plugin_access_menu',
+        'uses options' => FALSE,
+        'path' => "$path/plugins",
+      ),
+    ),
   );
 
   return $plugins;
 }
-
diff --git a/admin_views_default/comment.admin-content-comment.inc b/admin_views_default/comment.admin-content-comment.inc
index 418ea97..22bcf3c 100644
--- a/admin_views_default/comment.admin-content-comment.inc
+++ b/admin_views_default/comment.admin-content-comment.inc
@@ -20,8 +20,8 @@ $handler = $view->new_display('default', 'Defaults', 'default');
 $handler->display->display_options['title'] = 'Comments';
 $handler->display->display_options['css_class'] = 'admin-views-view';
 $handler->display->display_options['use_ajax'] = TRUE;
-$handler->display->display_options['access']['type'] = 'perm';
-$handler->display->display_options['access']['perm'] = 'administer comments';
+$handler->display->display_options['use_more_always'] = FALSE;
+$handler->display->display_options['access']['type'] = 'menu';
 $handler->display->display_options['cache']['type'] = 'none';
 $handler->display->display_options['query']['type'] = 'views_query';
 $handler->display->display_options['query']['options']['query_comment'] = FALSE;
diff --git a/admin_views_default/node.admin-content.inc b/admin_views_default/node.admin-content.inc
index 1becd64..89614c2 100644
--- a/admin_views_default/node.admin-content.inc
+++ b/admin_views_default/node.admin-content.inc
@@ -20,8 +20,8 @@ $handler = $view->new_display('default', 'Defaults', 'default');
 $handler->display->display_options['title'] = 'Content';
 $handler->display->display_options['css_class'] = 'admin-views-view';
 $handler->display->display_options['use_ajax'] = TRUE;
-$handler->display->display_options['access']['type'] = 'perm';
-$handler->display->display_options['access']['perm'] = 'access content overview';
+$handler->display->display_options['use_more_always'] = FALSE;
+$handler->display->display_options['access']['type'] = 'menu';
 $handler->display->display_options['cache']['type'] = 'none';
 $handler->display->display_options['query']['type'] = 'views_query';
 $handler->display->display_options['query']['options']['distinct'] = TRUE;
@@ -266,12 +266,12 @@ $handler->display->display_options['fields']['changed']['table'] = 'node';
 $handler->display->display_options['fields']['changed']['field'] = 'changed';
 $handler->display->display_options['fields']['changed']['label'] = 'Updated';
 $handler->display->display_options['fields']['changed']['date_format'] = 'short';
-/* Field: Node: Edit link */
+/* Field: Content: Edit link */
 $handler->display->display_options['fields']['edit_node']['id'] = 'edit_node';
 $handler->display->display_options['fields']['edit_node']['table'] = 'views_entity_node';
 $handler->display->display_options['fields']['edit_node']['field'] = 'edit_node';
 $handler->display->display_options['fields']['edit_node']['label'] = '';
-/* Field: Node: Delete link */
+/* Field: Content: Delete link */
 $handler->display->display_options['fields']['delete_node']['id'] = 'delete_node';
 $handler->display->display_options['fields']['delete_node']['table'] = 'views_entity_node';
 $handler->display->display_options['fields']['delete_node']['field'] = 'delete_node';
diff --git a/admin_views_default/taxonomy.admin-content-taxonomy.inc b/admin_views_default/taxonomy.admin-content-taxonomy.inc
index 8b591b4..ae3e627 100644
--- a/admin_views_default/taxonomy.admin-content-taxonomy.inc
+++ b/admin_views_default/taxonomy.admin-content-taxonomy.inc
@@ -13,14 +13,14 @@ $view->base_table = 'taxonomy_term_data';
 $view->human_name = 'Administration: Taxonomy terms';
 $view->core = 0;
 $view->api_version = '3.0';
-$view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */
+$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
 
 /* Display: Defaults */
 $handler = $view->new_display('default', 'Defaults', 'default');
 $handler->display->display_options['title'] = 'Terms';
 $handler->display->display_options['use_ajax'] = TRUE;
-$handler->display->display_options['access']['type'] = 'perm';
-$handler->display->display_options['access']['perm'] = 'administer taxonomy';
+$handler->display->display_options['use_more_always'] = FALSE;
+$handler->display->display_options['access']['type'] = 'menu';
 $handler->display->display_options['cache']['type'] = 'none';
 $handler->display->display_options['query']['type'] = 'views_query';
 $handler->display->display_options['exposed_form']['type'] = 'basic';
diff --git a/admin_views_default/user.admin-people.inc b/admin_views_default/user.admin-people.inc
index f157d6b..90018e9 100644
--- a/admin_views_default/user.admin-people.inc
+++ b/admin_views_default/user.admin-people.inc
@@ -20,8 +20,8 @@ $handler = $view->new_display('default', 'Defaults', 'default');
 $handler->display->display_options['title'] = 'Users';
 $handler->display->display_options['css_class'] = 'admin-views-view';
 $handler->display->display_options['use_ajax'] = TRUE;
-$handler->display->display_options['access']['type'] = 'perm';
-$handler->display->display_options['access']['perm'] = 'administer users';
+$handler->display->display_options['use_more_always'] = FALSE;
+$handler->display->display_options['access']['type'] = 'menu';
 $handler->display->display_options['cache']['type'] = 'none';
 $handler->display->display_options['query']['type'] = 'views_query';
 $handler->display->display_options['query']['options']['query_comment'] = FALSE;
diff --git a/plugins/views_plugin_access_menu.inc b/plugins/views_plugin_access_menu.inc
new file mode 100644
index 0000000..ab9bbbd
--- /dev/null
+++ b/plugins/views_plugin_access_menu.inc
@@ -0,0 +1,34 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_plugin_access_menu.
+ */
+
+/**
+ * Access plugin that provides router item-based access control.
+ *
+ * @ingroup views_access_plugins
+ */
+class views_plugin_access_menu extends views_plugin_access {
+  /**
+   * Checks access to the view in case the current path is not the router path defined for the view.
+   *
+   * When accessing/rendering a view on a different page than the original menu
+   * router path, then the menu system will not have checked access to the view.
+   * In that case, we need to check access to the router path manually.
+   */
+  function access($account) {
+    // If we are on the original router path, the menu system has checked access already.
+    $item = menu_get_item();
+    if ($item['path'] == $_GET['q']) {
+      return TRUE;
+    }
+    // Retrieve the original router path for this view, and check access to it.
+    $path = $this->view->get_option('path');
+    $item = menu_get_item($path);
+
+    return $item['access'];
+  }
+
+}
diff --git a/plugins/views_plugin_display_system.inc b/plugins/views_plugin_display_system.inc
index 424649a..21ffbde 100644
--- a/plugins/views_plugin_display_system.inc
+++ b/plugins/views_plugin_display_system.inc
@@ -111,47 +111,16 @@ class views_plugin_display_system extends views_plugin_display {
       $parent = &$callbacks[$path];
     }
 
-    $access_plugin = $this->get_plugin('access');
-    if (!isset($access_plugin)) {
-      $access_plugin = views_get_plugin('access', 'none');
-    }
-
-    // Get access callback might return an array of the callback + the dynamic arguments.
-    $access_plugin_callback = $access_plugin->get_access_callback();
-
-    if (is_array($access_plugin_callback)) {
-      $access_arguments = array();
-
-      // Find the plugin arguments.
-      $access_plugin_method = array_shift($access_plugin_callback);
-      $access_plugin_arguments = array_shift($access_plugin_callback);
-      if (!is_array($access_plugin_arguments)) {
-        $access_plugin_arguments = array();
-      }
-
-      $access_arguments[0] = array($access_plugin_method, &$access_plugin_arguments);
-
-      // Move the plugin arguments to the access arguments array.
-      $i = 1;
-      foreach ($access_plugin_arguments as $key => $value) {
-        if (is_int($value)) {
-          $access_arguments[$i] = $value;
-          $access_plugin_arguments[$key] = $i;
-          $i++;
-        }
-      }
-    }
-    else {
-      $access_arguments = array($access_plugin_callback);
-    }
+    // @todo Not required here, but we need to enforce the 'menu' access plugin for all admin_views.
+    // $access_plugin = views_get_plugin('access', 'menu');
 
     $items[$path] = array(
       // default views page entry
       'page callback' => 'views_page',
       'page arguments' => $page_arguments,
       // Default access check (per display)
-      'access callback' => 'views_access',
-      'access arguments' => $access_arguments,
+      'access callback' => !empty($callbacks[$path]['access callback']) ? $callbacks[$path]['access callback'] : 'user_access',
+      'access arguments' => $callbacks[$path]['access arguments'],
       // Identify URL embedded arguments and correlate them to a handler
       'load arguments' => array($this->view->name, $this->display->id, '%index'),
     );
@@ -246,6 +215,11 @@ class views_plugin_display_system extends views_plugin_display {
       'title' => t('System path settings'),
     );
 
+    // Disable access plugin in the UI.
+    // @todo Views plugins seem to be able to enforce options programmatically.
+    // $categories['access']['build']['#pre_render'] = array('devel_render');
+    $categories['access']['build']['#access'] = FALSE;
+
     $path = strip_tags('/' . $this->get_option('path'));
     if (empty($path)) {
       $path = t('None');
