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. FreeMarker 的使用方法

    1.FreeMarker 概述 FreeMarker 是一个用Java语言编写的模板引擎,使用模板来生成文本输出;主要用于做静态页面或页面展示; 2.FreeMarker 使用 // 导入jar包: ...

  2. 基于Maven的SSM框架搭建

    Maven + Spring + Spring MVC + Mybatis + MySQL整合SSM框架 1.数据库准备 本文主要想实现SSM框架的搭建,并基于该框架实现简单的登录功能,那么先新建一张 ...

  3. dos常用命令【总结】

    win7下有很多有用的dos命令,现在总结如下: 延伸:Linux常用命令[总结] 命令 作用 其他 ping 检查和另一台主机的连通性  ping  127.0.0.1   telnet 检查连通性 ...

  4. finecms万能标签list列表使用方法

    我们在用finecms建站时经常会用到调用文章列表的功能,这时我们可以用万能标签list来实现,当然还可以调用其他一些数据,下面我们就来看看list函数的相关参数和使用方法 action 支持&quo ...

  5. C#建WindowForm调用R可视化

    众所周知R软件功能非常强大,可以很好的进行各类统计,并能输出图形.下面介绍一种R语言和C#进行通信的方法,并将R绘图结果显示到WinForm UI界面上的方法,文中介绍的很详细,需要的朋友可以参考下. ...

  6. 将Ext JS 5应用程序导入Web项目中

    相关资料:http://docs.sencha.com/extjs/5.1/getting_started/welcome_to_extjs.html 原文地址: https://blog.csdn. ...

  7. 揭秘DOM中data和nodeValue属性同步改变那些事

    问题引发:最近在整理DOM系列的一些知识点,发现在DOM的某些接口API中,存在一些我想不通的现象.就随便举个例子吧:DOM文档模型中的文本节点,可以通过nodeValue或data属性访问文本节点的 ...

  8. (转)全局变量、extern/static/const区别与联系

    全局变量.extern/static/const区别与联系 编译单元(模块):     在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LIN ...

  9. iOS App 上架(Analysis 工具使用)

    随着iOS开发的流行,针对iOS开发涉及的方方面面,早有一些公司提供了专门的解决方案或工具.这些解决方案或工具包括:用户行为统计工具(友盟,Flurry,Google Analytics等), App ...

  10. flam3 ubuntu 依赖文件

    http://packages.ubuntu.com/zh-cn/source/precise/flam3 » Ubuntu » 软件包 » precise (12.04LTS) » 源代码 » x1 ...