我有一个有趣的问题,我正在编写一个密码管理网页/服务,我正试图找到一种方法来确定用户的密码何时到期,这样我就可以用它手动重置其他密码并发出一个电子邮件等。
我遇到的问题是,当我试图遍历我的用户时,我发现他们中的大部分没有pwdlastset属性,所以我无法确定它什么时候会过期。
所以我想我正在寻找一个好的方法来检查用户的密码何时到期,除了使用pwdlastset属性并计算剩余时间。
非常感谢。
答案 0 :(得分:8)
实际上它比你最初想象的要复杂得多......
然后:
唷!你觉得这会很棘手吗? :-)
马克
PS:如果你认真对待基于.NET的AD编程,你应该有这本书:The .NET Developer's Guide to Directory Services Programming
本书包含确定用户密码到期日期,确定用户帐户锁定状态等所有好处 - 强烈推荐! Joe和Ryan做了出色的工作,将所有这些信息汇总并解释,以便即使像我这样的普通Joe程序员也能理解它: - )
答案 1 :(得分:0)
据我所知,如果pwdlastset为零或缺失,则要求用户在下次登录时更改其密码,或者使用非过期密码设置其帐户。这可能是你所看到的原因吗?
答案 2 :(得分:0)
这是另一种方法:
public static DateTime GetPasswordExpirationDate(UserPrincipal user)
{
DirectoryEntry deUser = (DirectoryEntry)user.GetUnderlyingObject();
ActiveDs.IADsUser nativeDeUser = (ActiveDs.IADsUser)deUser.NativeObject;
return nativeDeUser.PasswordExpirationDate;
}
您需要添加对通常位于C:\ Windows \ System32 \ activeds.tlb的ActiveDS COM库的引用。