/// <summary>
 /// 禁用指定的用户。
 /// </summary>
 /// <param name="commonName">用户名</param>
 public void DisableUser(string commonName)
 {
     System.DirectoryServices.DirectoryEntry obUser = this.AD.Children.Find(commonName, "User");
     try
     {
         object             UserFlags  = obUser.Invoke("Get", "UserFlags");
         ADS_USER_FLAG_ENUM aUserFlags = (ADS_USER_FLAG_ENUM)UserFlags;
         aUserFlags = aUserFlags | ADS_USER_FLAG_ENUM.ACCOUNTDISABLE;
         obUser.Invoke("Put", "UserFlags", aUserFlags);
         obUser.CommitChanges();
     }
     finally
     {
         obUser.Close();
     }
 }
 /// <summary>
 /// 设置用户密码永不过期。
 /// </summary>
 /// <param name="commonName">用户名</param>
 public void EnableDontExpirePassword(string commonName)
 {
     System.DirectoryServices.DirectoryEntry obUser = this.AD.Children.Find(commonName, "User");
     try
     {
         object             UserFlags  = obUser.Invoke("Get", "UserFlags");
         ADS_USER_FLAG_ENUM aUserFlags = (ADS_USER_FLAG_ENUM)UserFlags;
         aUserFlags = aUserFlags | ADS_USER_FLAG_ENUM.DONT_EXPIRE_PASSWD;
         obUser.Invoke("Put", "UserFlags", aUserFlags);
         obUser.CommitChanges();
     }
     finally
     {
         obUser.Close();
     }
 }
 /// <summary>
 /// 取消设置用户不能更改密码。
 /// </summary>
 /// <param name="commonName">用户名</param>
 public void DisableChangePassword(string commonName)
 {
     System.DirectoryServices.DirectoryEntry obUser = this.AD.Children.Find(commonName, "User");
     try
     {
         object             UserFlags  = obUser.Invoke("Get", "UserFlags");
         ADS_USER_FLAG_ENUM aUserFlags = (ADS_USER_FLAG_ENUM)UserFlags;
         aUserFlags = aUserFlags & (~ADS_USER_FLAG_ENUM.PASSWD_CANT_CHANGE);
         obUser.Invoke("Put", "UserFlags", aUserFlags);
         obUser.CommitChanges();
     }
     finally
     {
         obUser.Close();
     }
 }
 /// <summary>
 /// 获取用户信息。
 /// </summary>
 /// <param name="commonName">用户名</param>
 /// <returns>用户信息。</returns>
 public UserInfo GetUser(string commonName)
 {
     System.DirectoryServices.DirectoryEntry obUser = this.AD.Children.Find(commonName, "user");
     try
     {
         string             FullName           = (string)obUser.Invoke("Get", "FullName");
         string             Description        = (string)obUser.Invoke("Get", "Description");
         string             HomeDirectory      = (string)obUser.Invoke("Get", "HomeDirectory");
         bool               PasswordExpired    = (int)obUser.Invoke("Get", "PasswordExpired") == 1? true: false;
         ADS_USER_FLAG_ENUM UserFlags          = (ADS_USER_FLAG_ENUM)obUser.Invoke("Get", "UserFlags");
         bool               DontExpirePassword = ((UserFlags & ADS_USER_FLAG_ENUM.DONT_EXPIRE_PASSWD) == ADS_USER_FLAG_ENUM.DONT_EXPIRE_PASSWD);
         bool               ChangePassword     = ((UserFlags & ADS_USER_FLAG_ENUM.PASSWD_CANT_CHANGE) == ADS_USER_FLAG_ENUM.PASSWD_CANT_CHANGE);
         bool               EnableUser         = ((UserFlags & ADS_USER_FLAG_ENUM.ACCOUNTDISABLE) == ADS_USER_FLAG_ENUM.ACCOUNTDISABLE);
         return(new UserInfo(commonName, FullName, Description, HomeDirectory, PasswordExpired, DontExpirePassword, ChangePassword, EnableUser));
     }
     finally
     {
         obUser.Close();
     }
 }