1.通过vs 2013 新建一个web站点(不是空项目),这个会带一下模板,

2.然后新建一个页面UpdatePassWord.aspx

aspx页面内容:

<%@ Page Title="UpdatePassWord" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="UpdatePassWord.aspx.cs" Inherits="ADUpdatePwd.Account.UpdatePassWord" %>

<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
<hgroup class="title">
<h1><%: Title %>.</h1>
<h2>更改AD域中用户密码。</h2>
</hgroup> <div>
<p class="message-info">
密码必须至少包含 <%: Membership.MinRequiredPasswordLength %> 个字符。
</p> <p class="validation-summary-errors">
<asp:Literal runat="server" ID="ErrorMessage" />
</p> <fieldset>
<legend>修改密码</legend>
<ol>
<li>
<asp:Label runat="server" AssociatedControlID="txt_UserName">用户名</asp:Label>
<asp:TextBox runat="server" ID="txt_UserName" />@sharepoint.com.cn
<asp:RequiredFieldValidator runat="server" ControlToValidate="txt_UserName"
CssClass="field-validation-error" ErrorMessage="用户名字段是必填字段。" />
</li>
<li>
<asp:Label runat="server" AssociatedControlID="txt_Old_PassWord">旧密码</asp:Label>
<asp:TextBox runat="server" ID="txt_Old_PassWord" TextMode="Password" />
<asp:RequiredFieldValidator runat="server" ControlToValidate="txt_Old_PassWord"
CssClass="field-validation-error" ErrorMessage="旧密码字段是必填字段。" />
</li>
<li>
<asp:Label runat="server" AssociatedControlID="txt_New_Password">新密码</asp:Label>
<asp:TextBox runat="server" ID="txt_New_Password" TextMode="Password" />
<asp:RequiredFieldValidator runat="server" ControlToValidate="txt_New_Password"
CssClass="field-validation-error" ErrorMessage="密码字段是必填字段。" />
</li>
<li>
<asp:Label runat="server" AssociatedControlID="txt_New_ConfirmPassword">确认新密码</asp:Label>
<asp:TextBox runat="server" ID="txt_New_ConfirmPassword" TextMode="Password" />
<asp:RequiredFieldValidator runat="server" ControlToValidate="txt_New_ConfirmPassword"
CssClass="field-validation-error" Display="Dynamic" ErrorMessage="确认新密码字段是必填字段。" />
<asp:CompareValidator runat="server" ControlToCompare="txt_New_Password" ControlToValidate="txt_New_ConfirmPassword"
CssClass="field-validation-error" Display="Dynamic" ErrorMessage="新密码和确认新密码不匹配。" />
</li>
</ol>
<asp:Button runat="server" ID="btn_Action_Update" CommandName="MoveNext" Text="修改" OnClick="btn_Action_Update_Click" />
</fieldset>
</div>
</asp:Content>

cs:代码:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.DirectoryServices;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace ADUpdatePwd.Account
{
public partial class UpdatePassWord : System.Web.UI.Page
{
static string _exception = "";
protected void Page_Load(object sender, EventArgs e)
{ } /// <summary>
/// 修改密码
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btn_Action_Update_Click(object sender, EventArgs e)
{
string _filePath = "log_" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";//输出日志
int _flog = ;//记录标识,是否存在修改密码的账户 1:代表存在此用户 2:代表不存在此用户 3:代表程序出错 4:代表旧密码不正确 5:新密码和旧密码相同 _filePath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + _filePath;
CheckIsHaveFile(_filePath); WriteLogToTxt(_filePath, "----执行开始----");
string _UserName = txt_UserName.Text.Trim();
string _Old_PassWord = txt_Old_PassWord.Text.Trim();
string _New_Password = txt_New_Password.Text.Trim();
string _New_ConfirmPassword = txt_New_ConfirmPassword.Text.Trim(); string DomainServer = ConfigurationManager.AppSettings["DomainServer_AD"].ToString();
string ManagerName = ConfigurationManager.AppSettings["ManagerName_AD"].ToString();
string ManagerPassword = ConfigurationManager.AppSettings["ManagerPassword_AD"].ToString(); WriteLogToTxt(_filePath, "----域控服务器:----" + DomainServer);
WriteLogToTxt(_filePath, "----管理员账户:----" + ManagerName);
WriteLogToTxt(_filePath, "----管理员密码:----" + ManagerPassword); WriteLogToTxt(_filePath, "----被修改账户:----" + _UserName);
WriteLogToTxt(_filePath, "----旧密码:----" + _Old_PassWord);
WriteLogToTxt(_filePath, "----新密码:----" + _New_Password); if (_Old_PassWord != _New_Password)
{
if (CheckIs_Old_PassWord_IsCorrect(_UserName, _Old_PassWord))
{
#region 密码修改部分
DirectoryEntry entry = new DirectoryEntry("LDAP://" + DomainServer, ManagerName, ManagerPassword, AuthenticationTypes.Secure);
List<string> directorys = new List<string>();
try
{
if (entry != null)
{
DirectorySearcher mySearcher = new DirectorySearcher(entry);
mySearcher.Filter = ("(&(objectClass=user)(sAMAccountName=" + _UserName + "))");
SearchResult searchResult = mySearcher.FindOne();
if (searchResult != null)
{
_flog = ;
WriteLogToTxt(_filePath, "----是否存在:----域中存在此账户");
DirectoryEntry userEntry = searchResult.GetDirectoryEntry();
//userEntry.Invoke("ChangePassword", new object[] { _Old_PassWord, _New_ConfirmPassword });//调ChangePassword方法修改密码
userEntry.Invoke("SetPassword", new object[] { _New_ConfirmPassword });
entry.CommitChanges();//提交修改
WriteLogToTxt(_filePath, "----执行结果:----密码修改成功");
}
else
{
_flog = ;
WriteLogToTxt(_filePath, "----是否存在:----域中不存在此账户");
}
}
}
catch (Exception ex)
{
WriteLogToTxt(_filePath, "----程序报错:----" + ex.Message);
ErrorMessage.Text = "程序报错:" + ex.Message;
_exception = ex.Message;
_flog = ;
}
finally
{
if (entry != null)
{
//释放资源
entry.Close();
entry.Dispose();
}
}
#endregion
}
else
_flog = ;
}
else
{
_flog = ;
} WriteLogToTxt(_filePath, "----执行结束----"); if (_flog == )
{
ErrorMessage.Text = "温馨提示:旧密码和新密码不能相同!";
}
else if (_flog == )
{
ErrorMessage.Text = "程序报错:" + _exception;
}
else if (_flog == )
{
ErrorMessage.Text = "温馨提示:域中不存在此账户!";
}
else if (_flog == )
{
ErrorMessage.Text = "温馨提示:修改成功!";
}
else if (_flog == )
{
ErrorMessage.Text = "程序报错:" + _exception;
} } /// <summary>
/// 检查输入的用户和老密码是否正确
/// </summary>
/// <param name="userName"></param>
/// <param name="passWord"></param>
/// <returns></returns>
public static bool CheckIs_Old_PassWord_IsCorrect(string userName, string passWord)
{
string _filePath = "log_" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";//输出日志
int _temp = ;
_filePath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + _filePath;
string DomainServer = ConfigurationManager.AppSettings["DomainServer_AD"].ToString();
string path = "LDAP://" + DomainServer; DirectoryEntry entry = new DirectoryEntry(path, userName, passWord, AuthenticationTypes.Secure); DirectorySearcher mySearcher = new DirectorySearcher(entry); mySearcher.Filter = ("(SAMAccountName=" + userName + ")"); try
{
SearchResult searchResult = mySearcher.FindOne(); if (searchResult != null)
_temp = ;
}
catch (Exception ex)
{
WriteLogToTxt(_filePath, "----程序报错:----" + ex.Message);
_exception = ex.Message;
_temp = ;
} if (_temp == )
return true;
else
return false;
} /// <summary>
/// 判断是否存在文件
/// </summary>
/// <param name="_filePath"></param>
public static void CheckIsHaveFile(string _filePath)
{
if (!System.IO.File.Exists(_filePath))
{
System.IO.File.WriteAllText(_filePath, "");
}
} /// <summary>
/// 写入txt文件记录信息
/// </summary>
/// <param name="_filePath"></param>
/// <param name="strdata"></param>
public static void WriteLogToTxt(string _filePath, string strdata)
{
StreamWriter sw = System.IO.File.AppendText(@_filePath);
sw.WriteLine(DateTime.Now.ToLocalTime() + " " + strdata);
sw.Flush();
sw.Close();
}
}
}

web.config

    <!--人员 域控 服务器-->
<add key="DomainServer_AD" value="192.168.1.1"/>
<!--管理员账号-->
<add key="ManagerName_AD" value="administrator"/>
<!--管理员密码-->
<add key="ManagerPassword_AD" value="1qaz2wsxR"/>

.net 修改AD域中的密码的更多相关文章

  1. java修改AD域用户密码使用SSL连接方式

    正常情况下,JAVA修改AD域用户属性,只能修改一些普通属性, 如果要修改AD域用户密码和userAccountControl属性就得使用SSL连接的方式修改, SSL连接的方式需要操作以下步骤: 1 ...

  2. AD域中添加了一个策略导致的问题

    AD域中添加了一个策略,导致浏览器报了一个错,点击下拉菜单选不了.查了资料说是添加信任站点就好,结果信任站点是置灰的,服务器有这个问题,本地是好的. 解决办法:本地服务器有个ie增强设置,关掉就好.

  3. 使用java连接AD域,验证账号密码是否正确

    eb项目中有时候客户要求我们使用ad域进行身份确认,不再另外做一套用户管理系统.其实客户就是只要一套账号可以访问所有的OA,CRM等办公系统.这就是第三方验证.一般有AD域,Ldap,Radius,邮 ...

  4. 烦烦烦SharePoint2013 以其他用户登录和修改AD域用户密码

    sharepoint默认是没有修改AD密码 和切换 用户的功能,这里我用future的方式来实现. 部署wsp前: 部署后 点击以其他用户身份登录 点击修改用户密码: 这里的扩展才菜单我们用Custo ...

  5. python-ldap修改AD域用户密码(CA+SSL)

    代码连接:https://github.com/raykuan/ldap-notes 使用python的ldap模块连接AD服务器,有两种方式: 非加密:con = ldap.initialize(' ...

  6. SharePoint2013 以其他用户登录和修改AD域用户密码 功能

    sharepoint默认是没有修改AD密码 和切换 用户的功能,这里我用future的方式来实现. 部署wsp前: 部署后: 点击以其他用户身份登录 点击修改用户密码: 这里的扩展才菜单我们用Cust ...

  7. 获取AD域中SYSVOL和组策略首选项中的密码

    这种方法是最简单的,因为不需要特殊的“黑客”工具.所有的攻击必须做的是打开Windows资源管理器,并搜索域名为SYSVOL DFS共享的XML文件.在大多数情况下,以下XML文件将包含凭据:grou ...

  8. C#获取AD域中计算机和用户的信息

    如果你的计算机加入了某个AD域,则可以获取该域中所有的计算机和用户的信息. 所用程序集,需要.Net Framework 4. 添加程序集引用 System.DirectoryServices.Acc ...

  9. AD域环境取消密码复杂度和密码使用期限

    本地组策略功能中设置密码永不过期的时候发现功能置灰了,不能设置: 这是因为创建域后默认本地组策略功能会被转移到域组策略管理里面,所以我们可以去组策略管理器里去更改组策略,因为一般本地策略的优先级别最低 ...

随机推荐

  1. 服务器端IO模型的简单介绍及实现

    https://mp.weixin.qq.com/s?src=3&timestamp=1541726441&ver=1&signature=xPSye3v7miF7aVeLHb ...

  2. C/C++编译过程

    C/C++编译过程 C/C++编译过程主要分为4个过程 1) 编译预处理 2) 编译.优化阶段 3) 汇编过程 4) 链接程序 一.编译预处理 (1)宏定义指令,如#define Name Token ...

  3. Ant-Design如何使用

    1.下载Node.js Node.js的版本需要不低于V4.x,本不在省略,如果需要出门左转Node.js安装教程. 查看Node.js版本: C:\Users\Administrator>no ...

  4. Ubuntu 常见错误--Could not get lock

    问题产生的原因:另外一个程序正在运行,导致资源被锁不可用.而导致资源被锁的原因可能是上次运行安装或更新时没有正常完成,进而出现此状况 解决问题的办法:sudo rm /var/cache/apt/ar ...

  5. 21.如何将java类对象转化为json字符串

    使用阿里巴巴的fastJson 下载链接: 链接: https://pan.baidu.com/s/1dHjLOm1 密码: rr3w 用法如下: User user = new User(); us ...

  6. Jenkins的安装及邮件配置

    Jenkins介绍  Jenkins,是基于Java开发的一种持续集成工具,用于监控秩序重复的工作,包括: 1).持续的软件版本发布/测试项目. 2).监控外部调用执行的工作. Jenkins安装 j ...

  7. 转Hibernate Annotation mappedBy注解理解

    在Annotation 中有这么一个@mappedBy 属性注解,相信有些同学还是对这个属性有些迷惑,上网找了些理解@mappedBy比较深刻的资料,下面贴出来供大家参考. http://xiaoru ...

  8. PAT 1144 The Missing Number[简单]

    1144 The Missing Number(20 分) Given N integers, you are supposed to find the smallest positive integ ...

  9. 学习完成CSS布局(左右浮动)

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  10. DEPHI XE5 XE6 ANDROID IOS开发的几点体会

    DEPHI XE5 XE6 ANDROID IOS开发的几点体会 2014-09-04 20:48 1.不纠结于APK或者APP的大小.现在的客户端设备都很廉价,300元以上的新安卓设备都不在乎软件的 ...