Código fuente completo en C# (C Sharp de Visual Studio .NET Community 2019) de una aplicación que permite cambiar la contraseña de un usuario en el Directorio Activo (Active Directory) de un Dominio Windows Server (LDAP). Permite que un usuario sin privilegios elevados pueda cambiar su contraseña en el dominio.

Requisitos para desarrollar aplicación C# que cambia la contraseña de usuario LDAP Active Directory

El único requisito será disponer del IDE de desarrollo Microsoft Visual Studio Community 2019 (o cualquier otra versión).

En los siguientes enlaces explicamos como instalar Visual Studio .Net y realizar una aplicación simple de prueba:

También necesitaremos disponer de un dominio en nuestra organización, con Windows Server 2008 en adelante (2012, 2016, 2019), un Directorio Activo (Active Directory), el LDAP de Microsoft. En los siguientes enlaces explicamos cómo montar un servidor de Directorio Activo:

Crear solución C# C Sharp en Visual Stduio .Net para cambio de contraseña de un usuario LDAP Active Directory

Abriremos Visual Studio .Net, pulsaremos en «Crear un proyecto» y elegiremos «Aplicación de Windows Forms (.NET Framework):

Crear solución C# C Sharp en Visual Stduio .Net para cambio de contraseña de un usuario LDAP Active Directory

Introduciremos el nombre y la ubicación de la solución, en nuestro caso «ProyectoAResetearContrasenaAD». Dejaremos el .NET Framework por defecto, que en nuestro caso es el .NET Framework 4.7.2. Esta será la versión mínima que necesitará la aplicación para ejecutarse:

Crear solución C# C Sharp en Visual Stduio .Net para cambio de contraseña de un usuario LDAP Active Directory

Crearemos un formulario con los siguientes componentes:

Crear solución C# C Sharp en Visual Stduio .Net para cambio de contraseña de un usuario LDAP Active Directory

Desde el menú «Proyecto» [1], pulsaremos en «Agregar referencia…» [2]:

Crear solución C# C Sharp en Visual Stduio .Net para cambio de contraseña de un usuario LDAP Active Directory

Marcaremos las referencias:

  • System.DirectoryServices.
  • System.DirectoryServices.AccountManagement.

Principalmente la segunda, en negrita, es la que necesitará nuestra solución para poder ejecutarse.

Y pulsaremos «Aceptar»:

Crear solución C# C Sharp en Visual Stduio .Net para cambio de contraseña de un usuario LDAP Active Directory

Agregaremos el código fuente, que a continuación mostramos, al formulario formPrincipal.cs (para el evento Click de los botones de cambiar contraseña y de salir y el método para cambiar la contraseña):

La aplicación Resetear/Restablecer contraseña Active Directory en funcionamiento

Para que la aplicación funcione necesitaremos tener instalado .NET Framework 4.7.2 o superior en el equipo. El equipo o equipos donde ejecutaremos la aplicación debe pertenecer al dominio Active Directory de la organización:

La aplicación Resetear/Restablecer contraseña Active Directory en funcionamiento

Abriremos el ejecutable de la aplicación (incluido en la descarga del código fuente), ResetearContrasenaAD.exe, nos mostrará la siguiente ventana:

La aplicación Resetear/Restablecer contraseña Active Directory en funcionamiento

Introduciremos los siguientes datos:

  • Dominio: nombre del dominio Active Directory en el que tenemos agregado el equipo y en el que tenemos el usuario de inicio de sesión.
  • Usuario: nombre del usuario con el que iniciamos sesión en el equipo, validando en el dominio.
  • Contraseña actual del usuario anterior.
  • Nueva contraseña: introduciremos la nueva contraseña para el usuario anterior.
  • Repetiremos la nueva contraseña.

Para cambiar la contraseña por la nueva pulsaremos en «Cambiar contraseña»:

La aplicación Resetear/Restablecer contraseña Active Directory en funcionamiento

Si todo es correcto, devolverá un mensaje indicando que la contraseña se ha cambiado:

Contraseña cambiada…
La contraseña se ha cambiado correctamente.
Le recomendamos que cierre sesión en el equipo y vuelva a acceder con la nueva contraseña.
Aceptar

La aplicación Resetear/Restablecer contraseña Active Directory en funcionamiento

Descarga del código fuente completo de la aplicación C# para restablecer la contraseña de un usuario de LDAP Active Directory

La descarga de la solución completa con código fuente en C# (C Sharp), desarrada en Microsoft Visual Studio Community 2019:

Algunos errores al restablecer/cambiar la contraseña de un usuario LDAP Active Directory

A continuación detallamos algunos de los errores que se pueden producir al cambiar la contraseña de un usuario en el dominio Active Directory.

  • Error si el usuario actual no existe en el dominio:

Error…
No se ha podido cambiar la contraseña. Se ha producido el siguiente error:
Referencia a objeto no establecida como instancia de un objeto.
Aceptar

Algunos errores al restablecer/cambiar la contraseña de un usuario LDAP Active Directory
  • Error si la contraseña del usuario actual no coincide con la del sistema:

Error…
No se ha podido cambiar la contraseña. Se ha producido el siguiente error:
La contraseña de red especificada no es válida. (Excepción de HRESULT: 0x80070056)
Aceptar

Algunos errores al restablecer/cambiar la contraseña de un usuario LDAP Active Directory
  • Error si la contraseña nueva que se introduce no cumple con los requisitos de directiva de contraseñas, la complejidad de la contraseña, que habitualmente fuerzan a que la contraseña contenga números y letras (mayúscuas y minúsculas) y algún carácter especial:

Error…
No se ha podido cambiar la contraseña. Se ha producido el siguiente error:
La contraseña no cumple con los requisitos de la directiva de contraseñas. Compruebe los requisitos de longitud mínima, complejidad e historial de la contraseña. (Excepción de HRESULT: 0x800708C5)
Aceptar

Algunos errores al restablecer/cambiar la contraseña de un usuario LDAP Active Directory
  • Error si la contraseña nueva que se introduce ya fue usada en otro momento:

Error…
No se ha podido cambiar la contraseña. Se ha producido el siguiente error:
La contraseña no cumple con los requisitos de la directiva de contraseñas. Compruebe los requisitos de longitud mínima, complejidad e historial de la contraseña. (Excepción de HRESULT: 0x800708C5)
Aceptar

Algunos errores al restablecer/cambiar la contraseña de un usuario LDAP Active Directory
  • Error si el dominio introducido no existe o no está disponible:

Error…
No se ha podido cambiar la contraseña. Se ha producido el siguiente error:
No fue posible ponerse en contacto con el servidor.
Aceptar

Algunos errores al restablecer/cambiar la contraseña de un usuario LDAP Active Directory