据我所知,在.net没有方法直接通过获取参数的方法获得AD上密码失效的时间,要通过用户参数pwdLastSet(密码最后设置时间)和域参数maxPwdAge(密码最大寿命)这两个参数计算获得.
pwdLastSet参数可以获得了,但是怎么获得maxPwdAge(密码最大寿命)?
  
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Runtime.InteropServices;
using System.DirectoryServices;namespace expiredate
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
///ActiveDs.tlb

public class WebForm1 : System.Web.UI.Page
{

protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.TextBox TextBox2;
protected System.Web.UI.WebControls.TextBox TextBox3;
protected System.Web.UI.WebControls.Button Button1;
[ComImport]
[Guid("9068270B-0939-11D1-8BE1-00C04FD8D503")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
internal interface IADsLargeInteger
{
[DispId(0x00000002)]
int HighPart{get; set;}
[DispId(0x00000003)]
int LowPart{get; set;}
}
private void Button1_Click(object sender, System.EventArgs e)
{
string ADUser = "1111111111111";
string ADPassword = "22222222";
string ADPath="LDAP://......";
try
{
System.DirectoryServices.DirectoryEntry mUser =
                               new System.DirectoryServices.DirectoryEntry(ADPath,ADUser,ADPassword);
mUser.RefreshCache();
         if(mUser.Properties.Contains("pwdLastSet"))
                           {                     IADsLargeInteger li =(IADsLargeInteger)mUser.Properties["pwdLastSet"][0];              
                         long date = (long)li.HighPart << 32 | (uint)li.LowPart;
                    DateTime time = DateTime.FromFileTime(date);
                    this.TextBox1.Text=time.ToString();
                           }
                   }
          }
}