diff --git a/password_reset.module b/password_reset.module
index c05da60..62bc2a3 100644
--- a/password_reset.module
+++ b/password_reset.module
@@ -214,6 +214,7 @@ function password_reset_form_alter(&$form, $form_state, $form_id) {
       }
       // Fall through.
     case 'user_register':
+      $required = !user_access('manage users');
       $form['password_reset'] = array(
         '#type' => 'fieldset',
         '#title' => t('Security question'),
@@ -226,14 +227,14 @@ function password_reset_form_alter(&$form, $form_state, $form_id) {
         '#title' => t('Question'),
         '#description' => t('Choose the question that you would like asked.'),
         '#options' => password_reset_questions_get(),
-        '#required' => TRUE
+        '#required' => $required,
       );
       $form['password_reset']['answer'] = array(
         '#type' => 'textfield',
         '#title' => t('Answer'),
         '#description' => t('Type the answer to the question you have chosen.'),
         '#maxlength' => 255,
-        '#required' => TRUE
+        '#required' => $required,
       );
 
       // Set defaults only if this is the edit form.
@@ -257,7 +258,7 @@ function password_reset_form_alter(&$form, $form_state, $form_id) {
 function password_reset_user($op, &$edit, &$account, $category = NULL) {
   switch ($op) {
     case 'validate':
-      if (isset($edit['password_reset'])) {
+      if (isset($edit['password_reset']) && !user_access('manage users')) {
         $question = password_reset_question_get($edit['password_reset']['question']);
         if ($question['answer_length'] > strlen(trim($edit['password_reset']['answer']))) {
           form_set_error('password_reset][answer', t('The provided answer is too short. This question requires an answer which is at least %length characters in length.', array('%length' => $question['answer_length'])));
