diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 6ba79cc..7dcdfbc 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -1043,8 +1043,12 @@
                         category.removeTile(n);
                     }
                 } else if (id == R.id.user_settings) {
+                    boolean hasMultipleUsers =
+                            ((UserManager) getSystemService(Context.USER_SERVICE))
+                                    .getUserCount() > 1;
                     if (!UserHandle.MU_ENABLED
-                            || !UserManager.supportsMultipleUsers()
+                            || (!UserManager.supportsMultipleUsers()
+                                    && !hasMultipleUsers)
                             || Utils.isMonkeyRunning()) {
                         category.removeTile(n);
                     }
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index a05aaa9..901ee50 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -186,7 +186,9 @@
         }
         final Context context = getActivity();
         mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
-        if (!mUserManager.supportsMultipleUsers() || Utils.isMonkeyRunning()) {
+        boolean hasMultipleUsers = mUserManager.getUserCount() > 1;
+        if ((!UserManager.supportsMultipleUsers() && !hasMultipleUsers)
+                || Utils.isMonkeyRunning()) {
             mEnabled = false;
             return;
         }
@@ -201,7 +203,8 @@
             mMePreference.setSummary(R.string.user_owner);
         }
         mAddUser = findPreference(KEY_ADD_USER);
-        if (!mIsOwner || UserManager.getMaxSupportedUsers() < 2) {
+        if (!mIsOwner || UserManager.getMaxSupportedUsers() < 2
+                || !UserManager.supportsMultipleUsers()) {
             removePreference(KEY_ADD_USER);
         } else {
             mAddUser.setOnPreferenceClickListener(this);
