这与这篇文章有些联系,我不想污染。
Active Directory user password expiration date .NET/OU Group Policy
与该线程中的OP一样,我试图通过代码获取给定AD UserName的密码到期日期;但是,当我试图获得所有可用属性时,上面线程中引用的属性maxPwdAge不可用:
PropertyCollection fields = myLDAP.Properties;
foreach (String ldapField in fields.PropertyNames)
{
// cycle through objects in each field e.g. group membership
// (for many fields there will only be one object such as name)
foreach (Object myCollection in fields[ldapField])
Console.WriteLine(String.Format("{0,-20} : {1}",
ldapField, myCollection.ToString()));
}
即使是微软的ADExplorer也没有显示密码到期日期。
但是当我尝试这个命令提示符命令时:
net user thatuser /DOMAIN
显示密码到期日期。
我的问题是:
现在我正在使用控制台应用程序对此进行测试;在测试时,发现目标机器上没有安装.Net 4.0,所以我坚持使用.Net 3.5
我不是服务器管理员,所以我不知道服务器的配置细节。我是这个AD LDAP的新手,所以请帮忙。谢谢。
答案 0 :(得分:3)
maxPwdAge
定义密码有效的时间长度,而不是密码有效期。
这是在组级别设置的属性,而不是用户属性。
您感兴趣的可能是maxPwdAge + pwdLastSet
。
(pwdLastSet
是用户属性)
答案 1 :(得分:2)
在我的一个项目中,我必须从域对象中读取maxPwdAge
并将该值添加到用户的lastPwdSet
属性中。