【问题标题】:Active Directory Password Expiration DateActive Directory 密码到期日期
【发布时间】:2013-01-18 15:40:43
【问题描述】:

这与这篇文章有些联系,我不想污染。

Active Directory user password expiration date .NET/OU Group Policy

与该线程中的 OP 一样,我正在尝试通过代码获取给定 AD 用户名的密码到期日期;但是,当我尝试像这样获取所有可用属性时,上面线程中提到的属性 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

它显示密码到期日期。

我的问题是:

  1. 为什么我看不到 maxPwdAge 属性
  2. net user 命令从哪里获取密码到期日期,如何在 C# 代码中获取它?

现在我正在使用控制台应用程序进行测试;在测试这个时,发现目标机器上没有安装.Net 4.0,所以我坚持使用.Net 3.5

我不是服务器管理员,所以我不知道服务器的配置细节。我是这个 AD LDAP 的新手,所以请帮忙。谢谢你。

【问题讨论】:

    标签: c# active-directory


    【解决方案1】:

    maxPwdAge 定义密码的有效期,而不是过期时间。

    它是在组级别设置的属性,而不是用户属性。

    你感兴趣的可能是maxPwdAge + pwdLastSet。

    (pwdLastSet 是用户属性)

    【讨论】:

      【解决方案2】:

      在我的一个项目中,我必须从域对象中读取 maxPwdAge 并将该值添加到用户的 lastPwdSet 属性中。

      【讨论】:

        猜你喜欢
        • 2017-09-03
        • 2016-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        相关资源
        最近更新 更多