diff --git modules/comment/comment.module modules/comment/comment.module
index 4ac23e9..a47e9c3 100644
--- modules/comment/comment.module
+++ modules/comment/comment.module
@@ -2251,7 +2251,7 @@ function theme_comment_post_forbidden($variables) {
         $destination = array('destination' => "node/$node->nid#comment-form");
       }
 
-      if (variable_get('user_register', 1)) {
+      if (variable_get('user_register', USER_REGISTER_VISITORS)) {
         // Users can register themselves.
         return t('<a href="@login">Log in</a> or <a href="@register">register</a> to post comments', array('@login' => url('user/login', array('query' => $destination)), '@register' => url('user/register', array('query' => $destination))));
       }
diff --git modules/comment/comment.test modules/comment/comment.test
index 5e036e7..91848bd 100644
--- modules/comment/comment.test
+++ modules/comment/comment.test
@@ -481,6 +481,11 @@ class CommentAnonymous extends CommentHelperCase {
     );
   }
 
+  function setUp() {
+    parent::setUp();
+    variable_set('user_register', USER_REGISTER_VISITORS);
+  }
+
   /**
    * Test anonymous comment functionality.
    */
diff --git modules/locale/locale.test modules/locale/locale.test
index 5ef82f8..7f531d8 100644
--- modules/locale/locale.test
+++ modules/locale/locale.test
@@ -1321,6 +1321,7 @@ class LocaleUserCreationTest extends DrupalWebTestCase {
 
   function setUp() {
     parent::setUp('locale');
+    variable_set('user_register', USER_REGISTER_VISITORS);
   }
 
   /**
diff --git modules/openid/openid.module modules/openid/openid.module
index c00bebc..f4c8d50 100644
--- modules/openid/openid.module
+++ modules/openid/openid.module
@@ -590,7 +590,7 @@ function openid_authentication($response) {
       drupal_set_message(t('You must validate your email address for this account before logging in via OpenID.'));
     }
   }
-  elseif (variable_get('user_register', 1)) {
+  elseif (variable_get('user_register', USER_REGISTER_VISITORS)) {
     // Register new user.
 
     // Save response for use in openid_form_user_register_form_alter().
diff --git modules/openid/openid.test modules/openid/openid.test
index b167600..9f81ac0 100644
--- modules/openid/openid.test
+++ modules/openid/openid.test
@@ -240,6 +240,7 @@ class OpenIDRegistrationTestCase extends OpenIDWebTestCase {
 
   function setUp() {
     parent::setUp('openid', 'openid_test');
+    variable_set('user_register', USER_REGISTER_VISITORS);
   }
 
   /**
diff --git modules/profile/profile.test modules/profile/profile.test
index 8fc7032..b39e284 100644
--- modules/profile/profile.test
+++ modules/profile/profile.test
@@ -10,7 +10,7 @@ class ProfileTestCase extends DrupalWebTestCase {
 
   function setUp() {
     parent::setUp('profile');
-    variable_set('user_register', 1);
+    variable_set('user_register', USER_REGISTER_VISITORS);
 
     $this->admin_user = $this->drupalCreateUser(array('administer users', 'access user profiles'));
 
diff --git modules/simpletest/simpletest.test modules/simpletest/simpletest.test
index 6525ae3..c25c5a5 100644
--- modules/simpletest/simpletest.test
+++ modules/simpletest/simpletest.test
@@ -292,6 +292,11 @@ class SimpleTestBrowserTestCase extends DrupalWebTestCase {
     );
   }
 
+  function setUp() {
+    parent::setUp();
+    variable_set('user_register', USER_REGISTER_VISITORS);
+  }
+
   /**
    * Test DrupalWebTestCase::getAbsoluteUrl().
    */
diff --git modules/simpletest/tests/form.test modules/simpletest/tests/form.test
index b413f19..cd9e21f 100644
--- modules/simpletest/tests/form.test
+++ modules/simpletest/tests/form.test
@@ -1088,6 +1088,7 @@ class FormsArbitraryRebuildTestCase extends DrupalWebTestCase {
       ),
     );
     field_create_instance($instance);
+    variable_set('user_register', USER_REGISTER_VISITORS);
   }
 
   /**
diff --git modules/user/user.admin.inc modules/user/user.admin.inc
index dedfd1d..2c879d2 100644
--- modules/user/user.admin.inc
+++ modules/user/user.admin.inc
@@ -297,7 +297,7 @@ function user_admin_settings() {
   $form['registration_cancellation']['user_register'] = array(
     '#type' => 'radios',
     '#title' => t('Who can register accounts?'),
-    '#default_value' => variable_get('user_register', 1),
+    '#default_value' => variable_get('user_register', USER_REGISTER_VISITORS),
     '#options' => array(
       t('Administrators only'),
       t('Visitors'),
@@ -428,7 +428,7 @@ function user_admin_settings() {
     '#type' => 'fieldset',
     '#title' => t('Welcome (new user created by administrator)'),
     '#collapsible' => TRUE,
-    '#collapsed' => (variable_get('user_register', 1) != 0),
+    '#collapsed' => (variable_get('user_register', USER_REGISTER_VISITORS) != USER_REGISTER_ADMINISTRATORS_ONLY),
     '#description' => t('Edit the welcome e-mail messages sent to new member accounts created by an administrator.') . ' ' . $email_token_help,
     '#group' => 'email',
   );
@@ -449,7 +449,7 @@ function user_admin_settings() {
     '#type' => 'fieldset',
     '#title' => t('Welcome (awaiting approval)'),
     '#collapsible' => TRUE,
-    '#collapsed' => (variable_get('user_register', 1) != 2),
+    '#collapsed' => (variable_get('user_register', USER_REGISTER_VISITORS) != USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL),
     '#description' => t('Edit the welcome e-mail messages sent to new members upon registering, when administrative approval is required.') . ' ' . $email_token_help,
     '#group' => 'email',
   );
@@ -470,7 +470,7 @@ function user_admin_settings() {
     '#type' => 'fieldset',
     '#title' => t('Welcome (no approval required)'),
     '#collapsible' => TRUE,
-    '#collapsed' => (variable_get('user_register', 1) != 1),
+    '#collapsed' => (variable_get('user_register', USER_REGISTER_VISITORS) != USER_REGISTER_VISITORS),
     '#description' => t('Edit the welcome e-mail messages sent to new members upon registering, when no administrator approval is required.') . ' ' . $email_token_help,
     '#group' => 'email',
   );
diff --git modules/user/user.module modules/user/user.module
index 505fe68..9ef3b60 100644
--- modules/user/user.module
+++ modules/user/user.module
@@ -17,6 +17,13 @@ define('USERNAME_MAX_LENGTH', 60);
 define('EMAIL_MAX_LENGTH', 254);
 
 /**
+ * User creation permission options.
+ */
+define('USER_REGISTER_ADMINISTRATORS_ONLY', 0);
+define('USER_REGISTER_VISITORS', 1);
+define('USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL', 2);
+
+/**
  * Implement hook_help().
  */
 function user_help($path, $arg) {
@@ -1015,7 +1022,7 @@ function user_account_form(&$form, &$form_state) {
     $status = isset($account->status) ? $account->status : 1;
   }
   else {
-    $status = $register ? variable_get('user_register', 1) == 1 : $account->status;
+    $status = $register ? variable_get('user_register', USER_REGISTER_VISITORS) == USER_REGISTER_VISITORS : $account->status;
   }
   $form['account']['status'] = array(
     '#type' => 'radios',
@@ -1224,7 +1231,7 @@ function user_login_block($form) {
     '#value' => t('Log in'),
   );
   $items = array();
-  if (variable_get('user_register', 1)) {
+  if (variable_get('user_register', USER_REGISTER_VISITORS)) {
     $items[] = l(t('Create new account'), 'user/register', array('attributes' => array('title' => t('Create a new user account.'))));
   }
   $items[] = l(t('Request new password'), 'user/password', array('attributes' => array('title' => t('Request new password via e-mail.'))));
@@ -1426,7 +1433,7 @@ function user_is_logged_in() {
 }
 
 function user_register_access() {
-  return user_is_anonymous() && variable_get('user_register', 1);
+  return user_is_anonymous() && variable_get('user_register', USER_REGISTER_VISITORS);
 }
 
 
diff --git modules/user/user.test modules/user/user.test
index 560ca7a..eb9ae38 100644
--- modules/user/user.test
+++ modules/user/user.test
@@ -15,12 +15,12 @@ class UserRegistrationTestCase extends DrupalWebTestCase {
     variable_set('user_email_verification', TRUE);
 
     // Set registration to administrator only.
-    variable_set('user_register', 0);
+    variable_set('user_register', USER_REGISTER_ADMINISTRATORS_ONLY);
     $this->drupalGet('user/register');
     $this->assertResponse(403, t('Registration page is inaccessible when only administrators can create accounts.'));
 
     // Allow registration by site visitors without administrator approval.
-    variable_set('user_register', 1);
+    variable_set('user_register', USER_REGISTER_VISITORS);
     $edit = array();
     $edit['name'] = $name = $this->randomName();
     $edit['mail'] = $mail = $edit['name'] . '@example.com';
@@ -31,7 +31,7 @@ class UserRegistrationTestCase extends DrupalWebTestCase {
     $this->assertTrue($new_user->status, t('New account is active after registration.'));
 
     // Allow registration by site visitors, but require administrator approval.
-    variable_set('user_register', 2);
+    variable_set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL);
     $edit = array();
     $edit['name'] = $name = $this->randomName();
     $edit['mail'] = $mail = $edit['name'] . '@example.com';
@@ -46,7 +46,7 @@ class UserRegistrationTestCase extends DrupalWebTestCase {
     variable_set('user_email_verification', FALSE);
 
     // Allow registration by site visitors without administrator approval.
-    variable_set('user_register', 1);
+    variable_set('user_register', USER_REGISTER_VISITORS);
     $edit = array();
     $edit['name'] = $name = $this->randomName();
     $edit['mail'] = $mail = $edit['name'] . '@example.com';
@@ -67,7 +67,7 @@ class UserRegistrationTestCase extends DrupalWebTestCase {
     $this->drupalLogout();
 
     // Allow registration by site visitors, but require administrator approval.
-    variable_set('user_register', 2);
+    variable_set('user_register', USER_REGISTER_VISITORS_ADMININSTRATIVE_APPROVAL);
     $edit = array();
     $edit['name'] = $name = $this->randomName();
     $edit['mail'] = $mail = $edit['name'] . '@example.com';
@@ -102,7 +102,7 @@ class UserRegistrationTestCase extends DrupalWebTestCase {
 
   function testRegistrationDefaultValues() {
     // Allow registration by site visitors without administrator approval.
-    variable_set('user_register', 1);
+    variable_set('user_register', USER_REGISTER_VISITORS);
 
     // Don't require e-mail verification.
     variable_set('user_email_verification', FALSE);
@@ -131,7 +131,7 @@ class UserRegistrationTestCase extends DrupalWebTestCase {
     $this->assertEqual($new_user->theme, '', t('Correct theme field.'));
     $this->assertEqual($new_user->signature, '', t('Correct signature field.'));
     $this->assertTrue(($new_user->created > REQUEST_TIME - 20 ), t('Correct creation time.'));
-    $this->assertEqual($new_user->status, variable_get('user_register', 1) == 1 ? 1 : 0, t('Correct status field.'));
+    $this->assertEqual($new_user->status, variable_get('user_register', USER_REGISTER_VISITORS) == USER_REGISTER_VISITORS ? 1 : 0, t('Correct status field.'));
     $this->assertEqual($new_user->timezone, variable_get('date_default_timezone'), t('Correct time zone field.'));
     $this->assertEqual($new_user->language, '', t('Correct language field.'));
     $this->assertEqual($new_user->picture, '', t('Correct picture field.'));
@@ -1450,7 +1450,7 @@ class UserEditedOwnAccountTestCase extends DrupalWebTestCase {
   function testUserEditedOwnAccount() {
     // Change account setting 'Who can register accounts?' to Administrators
     // only.
-    variable_set('user_register', 0);
+    variable_set('user_register', USER_REGISTER_ADMINISTRATORS_ONLY);
 
     // Create a new user account and log in.
     $account = $this->drupalCreateUser(array('change own username'));
diff --git profiles/minimal/minimal.install profiles/minimal/minimal.install
index 7d36ab3..e8a44fa 100644
--- profiles/minimal/minimal.install
+++ profiles/minimal/minimal.install
@@ -66,6 +66,9 @@ function minimal_install() {
   }
   $query->execute();
 
+  // Allow visitor account creation, but with administrative approval.
+  variable_set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL);
+
   // Enable default permissions for system roles.
   user_role_grant_permissions(DRUPAL_ANONYMOUS_RID, array('access content'));
   user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, array('access content'));
diff --git profiles/standard/standard.install profiles/standard/standard.install
index fe43d5b..4f5b8fa 100644
--- profiles/standard/standard.install
+++ profiles/standard/standard.install
@@ -272,6 +272,9 @@ function standard_install() {
   variable_set('user_picture_file_size', '800');
   variable_set('user_picture_style', 'thumbnail');
 
+  // Allow visitor account creation with administrative approval.
+  variable_set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL);
+
   // Create a default vocabulary named "Tags", enabled for the 'article' content type.
   $description = st('Use tags to group articles on similar topics into categories.');
   $help = st('Enter a comma-separated list of words to describe your content.');
