编程语言
首页 > 编程语言> > 强制本地用户在下次登录时使用C#更改密码

强制本地用户在下次登录时使用C#更改密码

作者:互联网

我正在为ASP.NET中的Web应用程序编写一个函数,其中客户端登录到服务器计算机,该计算机是针对服务器上的本地用户进行Windows身份验证的.我正在写的功能重置用户密码并通过电子邮件发送新密码.我是这样做的:

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

我如何检查标志以强制用户在下次使用通过电子邮件发送给他们的密码登录时更改密码?我试过像这样使用pwdLastSet:

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

但这显然只适用于LDAP,而不适用于WinNT,我在本地做这个.

任何专家都知道比我更好吗?我甚至试图通过命令行寻找一种方法来实现这一点,这样我就可以创建一个进程,但我也找不到这样做的方法.

最佳答案:

对于WinNT,您必须将值设置为1而不是0,并且属性名称为“PasswordExpired”而不是“pwdLastSet”;见http://msdn.microsoft.com/en-us/library/aa746542(VS.85).aspx

换句话说,为WinNT执行此操作:

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

(我知道,这很令人困惑,但对于LDAP,你需要将属性“pwdLastSet”设置为0.如何不一致!)

标签:c,asp-net,directoryentry
来源: https://codeday.me/bug/20190515/1110354.html