2011-02-01 19 views
5

No importa lo que estoy tratando de lanzar en él, este método aquí siempre resulta en la siguiente excepción:La invocación ChangePassword con objeto DirectoryEntry

  var retVal = this.DirectoryEntry.Invoke("ChangePassword", new object[] { oldPassword, newPassword }) == null; 

InnerException = { "La contraseña no cumple con la directiva de contraseñas Requisitos: compruebe la longitud mínima de la contraseña, la complejidad de la contraseña y los requisitos del historial de contraseñas. (Excepción de HRESULT: 0x800708C5) "}

Comprobé naturalmente la política predeterminada del dominio (no se encontró en mi dominio de prueba), política de grupo OU (no existe) y no puede encontrar nada que pueda gobernar la política de contraseñas, sin embargo, no importa cuán larga o compleja sea la contraseña ord suministro en la función es, resulta en la misma excepción. Ahora la parte más interesante es cuando hago lo mismo (para el mismo objeto DirectoryEntity y la misma contraseña) llamando a esto:

var retVal = this.DirectoryEntry.Invoke("SetPassword", new object[] { newPassword }) == null; 

La última llamada se realiza correctamente w/o cualquier problema.

Respuesta

7

hay una serie de directivas de grupo va a afectar la complejidad de la contraseña. La mayoría de ellos se activan por defecto después de instalar Active Directory. Si nunca los ha tocado después de configurar su dominio de prueba, es muy probable que esas políticas de contraseña sigan vigentes.

Esto es lo que mi configuración de seguridad predeterminada de dominio dominio de prueba parecen. Si no lo cambiaste antes, debería verse similar.

Default Domain Security Settings

Puede encontrar descripciones detalladas sobre cada una de las políticas en MSDN. Solo incluiré un resumen y un enlace aquí.

  • Enforce password history - Asegúrese de no volver a utilizar la contraseña anterior.
  • Maximum password age - Asegúrese de que no puede usar la misma contraseña más de un período de tiempo. Es predeterminado a 42 días.
  • Minimum password age - Asegúrese de que no se puede cambiar la contraseña hasta que haya transcurrido más de un período de tiempo. Es predeterminado a 1 día en un dominio.
  • Minimum password length - Autoexplicado. Tiene un valor predeterminado de 7 caracteres en el controlador de dominio.
  • Password must meet complexity requirements - Asegúrese de que está utilizando una combinación de letras, números y caracteres de símbolos en su contraseña

Todos los ajustes anteriores pueden ser la causa de su error 0x800708C5. En particular, creo que es la política de contraseña de "edad mínima de contraseña" que le causa problemas. Está configurado por defecto en 1 día. Si su cuenta de prueba es una nueva cuenta de usuario creada recientemente, no puede cambiar su contraseña en el mismo día.

Así que ahora, usted puede pensar que, en el entorno de prueba, debe desactivar todas estas políticas de contraseñas con fines de desarrollo. No recomendaré simplemente definir todas las políticas sin definir quitando la marca de la casilla de verificación en las páginas de propiedades.Yo recomendaría los siguientes ajustes.

Un último paso que debe hacer es rellenar nuevamente la directiva de grupo en su máquina. Recuerde, la política de grupo es la configuración almacenada en Active Directory. Las políticas del grupo de máquinas se aplican al momento de inicio de la máquina, mientras que las políticas del grupo de usuarios se aplican a la hora de inicio de sesión del usuario. Las políticas de contraseñas son una de esas políticas de máquina. Por lo tanto, puede reiniciar su computadora ahora o puede ir al símbolo del sistema y ejecutar gpupdate.

Espero no haber perdido ninguna información importante. Déjame saber si todavía no funciona :)

+0

gracias, voy a hacer más pruebas y va a saber pronto. – dexter

Cuestiones relacionadas