Forzar usuario local a cambio de contraseña en el siguiente inicio de sesión con C #

StackOverflow https://stackoverflow.com/questions/3886713

  •  28-09-2019
  •  | 
  •  

Pregunta

Estoy escribiendo una función para una aplicación web en ASP.NET, donde los registros del cliente en la máquina servidor, que es Windows autenticado contra los usuarios locales en el servidor. La función que estoy escribiendo se restablece la contraseña de usuarios y correos electrónicos ellos el nuevo. Lo hago de esta manera:

String userPath = "WinNT://"  + Environment.MachineName + "/" + username.Text;
DirectoryEntry de = new DirectoryEntry(userPath);
de.Invoke("SetPassword", new object[] { password });

¿Cómo puedo consultar también la bandera para obligar al usuario a cambiar su contraseña la próxima vez que inicien sesión con la contraseña enviada por correo electrónico a ellos? He intentado utilizar pwdLastSet este modo:

de.Properties["pwdLastSet"].Value = 0;

Pero esto al parecer sólo funciona con LDAP, no WinNT, y yo estoy haciendo esto de forma local.

Cualquier expertos saben mejor que yo? Incluso he intentado buscar una manera de hacer esto a través de la línea de comandos para que solo puedo crear un proceso, pero no he sido capaz de encontrar una manera de hacerlo de esa manera, tampoco.

¿Fue útil?

Solución

Para WinNT, debe establecer el valor en 1 en lugar de 0, y el nombre de la propiedad es "PasswordExpired" en lugar de "pwdLastSet"; ver http://msdn.microsoft.com/en-us /library/aa746542(VS.85).aspx

En otras palabras, hacer esto para WinNT:

de.Properties["PasswordExpired"].Value = 1;

(Es confuso, lo sé, pero para LDAP es necesario configurar la propiedad "pwdLastSet" a 0. ¿Cómo es eso de la inconsistencia!)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top