【问题标题】:How to check ADuser "Password never expires" properties check or not using C++ Win32API?如何检查 ADuser“密码永不过期”属性检查或不使用 C++ Win32API?
【发布时间】:2012-11-02 11:46:07
【问题描述】:

我正在使用 C++ Win32 API...

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

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

【问题讨论】:

    标签: c++ winapi active-directory adsi


    【解决方案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 */}

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

    【讨论】:

      【解决方案2】:

      请检查一下...希望它能解决您的问题

      WriteLogMessage("处理中:" + 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
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-21
        • 1970-01-01
        • 2013-07-04
        • 2011-01-03
        • 2014-12-08
        • 1970-01-01
        • 2015-08-31
        • 1970-01-01
        相关资源
        最近更新 更多