如何检查ADuser“密码永不过期”属性检查或不使用C ++ Win32API?

时间:2012-11-02 11:46:08

标签: c++ winapi active-directory adsi

我使用的是C ++ Win32 API ...

我想知道用户密码策略属性值...

即“密码永不过期”,如何检查是否使用C ++ Win32 API检查此属性?

2 个答案:

答案 0 :(得分:1)

您可以使用COM接口IADsUser。 见this MSDN example for enabling "never expires" flag

您可以在排到V_I4(&var) |= ADS_UF_DONT_EXPIRE_PASSWD;之前的第一部分使用它 - 将其替换为if (V_I4(&var) & ADS_UF_DONT_EXPIRE_PASSWD) { /* option is enabled! your code here */}

希望这会有所帮助。这是工作:)

答案 1 :(得分:1)

请查看此...希望它可以解决您的问题

WriteLogMessage(“Processing:”+ UserEntry.Name);

                    WriteLogMessage("Max Password Age:" + iMaxPwdAge);

                    //Console.WriteLine("Account control:" + UserEntry.Properties["userAccountcontrol"].Value);

                    int userAccountControl = Convert.ToInt32(UserEntry.Properties["userAccountcontrol"].Value);
                    if ((userAccountControl & ADS_DONT_EXPIRE_PASSWORD) > 0)
                    {
                        WriteLogMessage("Password never expires for:" + UserEntry.Name);
                    }
                    else
                    {
                        WriteLogMessage("Password expiration date found for:" + UserEntry.Name);

                        ActiveDs.IADsUser native = (ActiveDs.IADsUser)UserEntry.NativeObject;

                        DateTime passwordLastChanged = new DateTime(9999, 1, 1);
                        try

如果您不想使用脚本,请使用第三方工具。它会自动更新您的密码已过期且密码永不过期。