.net 修改AD域中的密码
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域中的密码的更多相关文章
- java修改AD域用户密码使用SSL连接方式
正常情况下,JAVA修改AD域用户属性,只能修改一些普通属性, 如果要修改AD域用户密码和userAccountControl属性就得使用SSL连接的方式修改, SSL连接的方式需要操作以下步骤: 1 ...
- AD域中添加了一个策略导致的问题
AD域中添加了一个策略,导致浏览器报了一个错,点击下拉菜单选不了.查了资料说是添加信任站点就好,结果信任站点是置灰的,服务器有这个问题,本地是好的. 解决办法:本地服务器有个ie增强设置,关掉就好.
- 使用java连接AD域,验证账号密码是否正确
eb项目中有时候客户要求我们使用ad域进行身份确认,不再另外做一套用户管理系统.其实客户就是只要一套账号可以访问所有的OA,CRM等办公系统.这就是第三方验证.一般有AD域,Ldap,Radius,邮 ...
- 烦烦烦SharePoint2013 以其他用户登录和修改AD域用户密码
sharepoint默认是没有修改AD密码 和切换 用户的功能,这里我用future的方式来实现. 部署wsp前: 部署后 点击以其他用户身份登录 点击修改用户密码: 这里的扩展才菜单我们用Custo ...
- python-ldap修改AD域用户密码(CA+SSL)
代码连接:https://github.com/raykuan/ldap-notes 使用python的ldap模块连接AD服务器,有两种方式: 非加密:con = ldap.initialize(' ...
- SharePoint2013 以其他用户登录和修改AD域用户密码 功能
sharepoint默认是没有修改AD密码 和切换 用户的功能,这里我用future的方式来实现. 部署wsp前: 部署后: 点击以其他用户身份登录 点击修改用户密码: 这里的扩展才菜单我们用Cust ...
- 获取AD域中SYSVOL和组策略首选项中的密码
这种方法是最简单的,因为不需要特殊的“黑客”工具.所有的攻击必须做的是打开Windows资源管理器,并搜索域名为SYSVOL DFS共享的XML文件.在大多数情况下,以下XML文件将包含凭据:grou ...
- C#获取AD域中计算机和用户的信息
如果你的计算机加入了某个AD域,则可以获取该域中所有的计算机和用户的信息. 所用程序集,需要.Net Framework 4. 添加程序集引用 System.DirectoryServices.Acc ...
- AD域环境取消密码复杂度和密码使用期限
本地组策略功能中设置密码永不过期的时候发现功能置灰了,不能设置: 这是因为创建域后默认本地组策略功能会被转移到域组策略管理里面,所以我们可以去组策略管理器里去更改组策略,因为一般本地策略的优先级别最低 ...
随机推荐
- RHEL6.×配置Centos YUM源
Step1: 清除原有的yum源rpm -aq|grep yum|xargs rpm -e --nodeps Step2:下载新的yum()源进行安装,注意操作系统支持64位还是32位wget htt ...
- d3.js:数据可视化利器之 selection:选择集
选择集/selection 选择集/selection是d3中的核心对象,用来封装一组从当前HTML文档中选中的元素: d3提供了两个方法用来创建selection对象: select(selecto ...
- 利用idea的code inspect功能进行代码静态分析
利用idea.phpstorm系列的ide的code inspect功能可以开发出适用于各种编程语言的代码静态分析工具.这个功能大家可以自己实现扩展规则,规则也使用了visitor模式,规则里对关心的 ...
- 013-HQL中级3-Hive四种数据导入方式介绍
Hive的几种常见的数据导入方式这里介绍四种:(1).从本地文件系统中导入数据到Hive表:(2).从HDFS上导入数据到Hive表:(3).从别的表中查询出相应的数据并导入到Hive表中:(4).在 ...
- 关于sails 初学者常见问题汇总
http://sailsdoc.swift.ren/ 这里有 sails中文文档 一.安装时: 先装nodejs,成功标志 node -v 安装sails 全局安装 node install sail ...
- django高级之爬虫基础
目录: 爬虫原理 requests模块 beautifulsoup模块 爬虫自动登陆示例 一.爬虫原理 Python非常适合用来开发网页爬虫,理由如下:1.抓取网页本身的接口相比与其他静态编程语言,如 ...
- 谷歌浏览器Chrome错误提示Flash过期怎么办(转)
在使用谷歌浏览器Chrome时,会碰到谷歌浏览器Chrome的错误提示:“Adobe Flash Player因过期而遭到阻止”,点击“更新插件”是不行的,国内的网络根本就打不开,点击“运行一次”是可 ...
- quick-cocos2d-x + Lua 开发
quick-cocos2d-x + Lua 开发 quick-cocos2d-x + Lua 开发 首页在Eclipse中搭建quick-cocos2d-x的lua开发环境. 1. 首先需要 ...
- 如何在mysql中存储音乐和图片文件
如何在mysql中存储音乐和图片文件? 果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的! 我将告诉你怎样通过HTML表单来储存这些文件, ...
- Mysql Having的用法:对group by之后的分组加限制条件(复制)
在使用聚合函数之前,我们可以通过where对查询加限制条件,那么如果在group by之后我们要对分组里面的数据再加限制条件怎么办呢?答案是having. HAVING子句可以让我们筛选成组后的各组数 ...