域局域网用户加密码密码到期不能修改密码,没过期却可以修改

——————————————————————————————————————————————————...
NET 修改域账户过期密码
采用常规的AD域账号修改密码,去修改过期密码是行不通的
测试半天,都把域控里面的账号过期误解为密码过期了,所以一直
在网上找不到把域账户设置为永不过期的资料
其实只需要处理密码过期问题就好
域账户密码过期的处理方式,可以直接通过管理员账号密码设置
不能通过自己修改,AD域接口自己修改自己密码的前提只能是密码未过期
如果一个过期的密码调用域账号修改,程序给出的错误和密码不对是一样的
最终实现思路:
先设置域账户密码永不过期
再调用密码修改接口
最后把账号改为正常用户相关代码:
&%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RightNewWorkflow.ascx.cs" Inherits="Capitaland.UI.ControlsNew.NewWorkflowRight" %&
新建工作流--%&
&table style="width:100%;"&
&td style="text-align:center"&
&ul class="right_new"&
&li &&a href="&%=alink %&" style="color:#FFFFFF;height:50 cursor: margin-left:10 text-align:center"&&span&新建工作流&/span&&/a&&/li&
style="padding-left:5text-align:center"&
&div class="right_new"&
&li &&a style="color:#FFFFFF;height:50
cursor: margin-left:10 text-align:center"
href="javascript:void(0)" onclick="return changePWD();"&&span &修改密码&/span&&/a&&/li&
&div class="modal fade" id="pwdmodal"&
&div class="modal-dialog"&
&div class="modal-content"&
&div class="modal-header"&
&h4 class="modal-title"&密码修改&/h4&
&div class="modal-body"&
&div class="row"&
&label class="col-md-2 control-label" style="padding: 5"&用户名:&/label&
&div class="col-md-10" style="margin-bottom: 10"&
&asp:TextBox ID="txt_ad" MaxLength="20" autocomplete="off" ClientIDMode="Static" runat="server" class="form-control"&&/asp:TextBox&
&div class="row"&
&label class="col-md-2 control-label" style="padding: 5"&原密码:&/label&
&div class="col-md-10" style="margin-bottom: 10"&
&asp:TextBox ID="txt_oldPWD" MaxLength="20" TextMode="Password" autocomplete="off" ClientIDMode="Static" runat="server" class="form-control"&&/asp:TextBox&
&div class="row"&
&label class="col-md-2 control-label" style="padding: 5"&新密码:&/label&
&div class="col-md-10" style="margin-bottom: 10"&
&asp:TextBox ID="txt_newPWD"
MaxLength="20"
TextMode="Password" autocomplete="off" ClientIDMode="Static" runat="server" class="form-control"&&/asp:TextBox&
&div class="row"&
&label class="col-md-2 control-label" style="padding: 5"&确认密码:&/label&
&div class="col-md-10" style="margin-bottom: 10"&
&asp:TextBox ID="txt_newConfirmPWD" MaxLength="20"
TextMode="Password" autocomplete="off" ClientIDMode="Static" runat="server" class="form-control"&&/asp:TextBox&
&div class="row" style="padding: 5"&
&label class="col-md-12 control-label" id="pdwMSG" style="padding: 0 color:"&&/label&
&div class="modal-footer"&
&button type="button" id="pwdmodal_ok" data-loading-text="修改中..." class="btn btn-primary" onclick="pwdClick();"&确定&/button&
&button type="button" id="pwdmodal_cancel" data-loading-text="取消" class="btn btn-default" data-dismiss="modal"&取消&/button&
&!-- /.modal-content --&
&!-- /.modal-dialog --&
&div class="modal fade" id="master_alertmodal"&
&div class="modal-dialog"&
&div class="modal-content"&
&div class="modal-header"&
&h4 class="modal-title"&消息提示&/h4&
&div class="modal-body"&
&p id="master_alertmsg"&
&%-- 新建工作流--%&
&script type="text/javascript"&
//修改密码
function changePWD() {
$('#pwdmodal').modal({ backdrop: 'static', keyboard: false });
$("#pdwMSG").text("");
//修改密码
function pwdClick() {
$("#pdwMSG").text("");
var ad = $.trim($("#txt_ad").val());
var oldPWD = $.trim($("#txt_oldPWD").val());
var newPWD = $.trim($("#txt_newPWD").val());
var newConfirmPWD = $.trim($("#txt_newConfirmPWD").val());
if (ad == "") {
$("#pdwMSG").text("请输入用户名。");
if (oldPWD == "") {
$("#pdwMSG").text("请输入原密码。");
if (newPWD == "") {
$("#pdwMSG").text("请输入新密码。");
if (newConfirmPWD == "") {
$("#pdwMSG").text("请输入确认密码。");
if (newPWD != newConfirmPWD) {
$("#pdwMSG").text("新密码和确认密码不一致。");
if (oldPWD == newConfirmPWD) {
$("#pdwMSG").text("新密码和旧密码不能相同。");
var pwdmodal_ok = $("#pwdmodal_ok");
pwdmodal_ok.button('loading');
var pwdmodal_cancel = $("#pwdmodal_cancel");
pwdmodal_cancel.button('loading');
var param = {};
param.flag = new Date().getTime();
param.type = "ChangePWD";
param.ad =
param.oldPWD = oldPWD;
param.newPWD = newPWD;
$.get("UI/ControlsNew/Handler/ProblemHandler.ashx", param, function (data) {
pwdmodal_ok.button('reset');
pwdmodal_cancel.button('reset');
if (data == "OK") {
$("#pdwMSG").text("修改成功。");
$("#pdwMSG").text(data);
&add key="DomainLdap" value="DC=k2test,DC=cn" /&
&add key="DCIP" value="ipaddress" /&--10.0.1.1
&add key="AdminName" value="k2test\admin"/&
&add key="AdminPassWord" value="password"/&
using System.Collections.G
using System.C
using System.DirectoryS
using System.L
using System.W
namespace Capitaland.Base
public class ADUtil
/// &summary&
/// 管修改密码
/// &/summary&
/// &param name="userName"&&/param&
/// &param name="oldPassWord"&&/param&
/// &param name="newPassWord"&&/param&
/// &param name="msg"&&/param&
/// &returns&&/returns&
public static bool ChangePWD(string userName, string oldPassWord, string newPassWord, out string msg)
bool flag =
string DomainLdap = ConfigurationManager.AppSettings["DomainLdap"].ToString();
string DCIP = ConfigurationManager.AppSettings["DCIP"].ToString();
string LDAP = @"LDAP://" + DCIP + @"/" + DomainL
string DomainUserPrefix = ConfigurationManager.AppSettings["DomainUserPrefix"].ToString();
string userAD = DomainUserPrefix + "\\" + userN
DirectoryEntry AD = new DirectoryEntry();
AD.Path = LDAP;
AD.Username = userAD;
AD.Password = oldPassW
AD.AuthenticationType = AuthenticationTypes.S
DirectorySearcher searcher = new DirectorySearcher(AD);
searcher.Filter = String.Format("(&(objectClass=user)(samAccountName={0}))", userName);
System.DirectoryServices.SearchResult result = searcher.FindOne();
if (result != null)
DirectoryEntry userEntry = result.GetDirectoryEntry();
if (userEntry != null)
userEntry.Invoke("ChangePassword", new Object[] { oldPassWord, newPassWord });
userEntry.CommitChanges();
userEntry.Close();
msg = "修改密码成功!";
catch (Exception ex)
if (ex.Message.Contains("调用的目标"))
msg = "密码强度不够。";
msg = ex.M
msg = "修改失败,未知账号或密码错误!";
msg = "修改失败,未知账号或密码错误!";
AD.Close();
catch (Exception)
msg = "修改失败,原密码不正确。";
/// &summary&
/// 修改过期时间
/// &/summary&
/// &param name="userName"&&/param&
/// &param name="isNormalOrNotExpirePWD"&是否正常账号还是密码不过期账号true 正常 false不过期&/param&
/// &param name="msg"&&/param&
/// &returns&&/returns&
public static bool ResetLastTime(string userName, bool isNormalOrNotExpirePWD, out string msg)
string DomainLdap = ConfigurationManager.AppSettings["DomainLdap"].ToString();
string DCIP = ConfigurationManager.AppSettings["DCIP"].ToString();
string LDAP = @"LDAP://" + DCIP + @"/" + DomainL
string DomainUserPrefix = ConfigurationManager.AppSettings["DomainUserPrefix"].ToString();
string userAD = DomainUserPrefix + "\\" + userN
string adminAccount = ConfigurationManager.AppSettings["AdminName"].ToString();
string adminPwd = ConfigurationManager.AppSettings["AdminPassWord"].ToString();
DirectoryEntry AD = new DirectoryEntry();
AD.Path = LDAP;
AD.Username = adminA
AD.Password = adminP
AD.AuthenticationType = AuthenticationTypes.S
DirectorySearcher searcher = new DirectorySearcher(AD);
searcher.Filter = String.Format("(&(objectClass=user)(samAccountName={0}))", userName);
System.DirectoryServices.SearchResult result = searcher.FindOne();
DirectoryEntry userEntry = result.GetDirectoryEntry();
if (isNormalOrNotExpirePWD)
//512 和 65536的值通过官方查userAccountControl属性的值得出
//正常用户
userEntry.Properties["userAccountControl"].Value = 512;
//密码永不过期
userEntry.Properties["userAccountControl"].Value = 65536;
userEntry.CommitChanges();
userEntry.Close();
msg = "设置成功。";
catch (Exception ex)
msg = ex.M
没有更多推荐了,在web中如何判断域用户是否能更改密码
[问题点数:40分,结帖人qq_]
本版专家分:0
结帖率 50%
CSDN今日推荐
本版专家分:0
结帖率 50%
本版专家分:5941
本版专家分:9975
本版专家分:0
结帖率 50%
本版专家分:29794
本版专家分:0
结帖率 50%
本版专家分:0
结帖率 50%
本版专家分:0
结帖率 50%
本版专家分:55587
本版专家分:9975
匿名用户不能发表回复!|
CSDN今日推荐博客访问: 30155
博文数量: 120
博客积分: 0
博客等级: 民兵
技术积分: 690
注册时间:
认证徽章:
分类: WINDOWS 16:49:21
1.因为需要管理员邮箱的账号密码进行发送邮件,所以此处我们先将管理员的密码进行编译,使用编译密码脚本对管理员邮箱密码进行编译。(A处修改生成的编译密码的路径,B处填写管理员邮箱的密码,该脚本使用完成后即可删除,保留生成的txt文件即可)
2.&a)下面需要修改的就是给即将过期的域用户发送邮件的脚本。(A处和C处填写管理员的邮箱地址,B处填写邮件服务器)
b)&在下图A处选择需要发送邮件的路径,第一种方式为所有用户,第二种方式为指定ou下,均已排除永不过期及禁用用户。B处填写域用户密码过期时长。C处填写距离密码过期还有几天邮件提醒,密码过期天数小于该设定天数的用户会每天收到一封邮件,直至完成修改密码。
c) $Emailbody为提醒邮件的主题,可根据自己需求进行更改。
d)A&处填写管理员的邮箱地址,B处填写密码编译后的txt文件路径,此处用作邮箱服务器验证,直至此处send-MailMessage命令已完成向即将密码过期的域用户发送邮件提醒功能。
3. &接下来就是制定每天的任务计划去自动完成要实现的功能。
a)&首先需要修改start-pass.vbs文件红色方框内修改password.Ps1脚本的路径。
b)&开始设置任务计划。
点击确定,完成设置。
阅读(680) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
请登录后评论。天极传媒:天极网全国分站
您现在的位置:
& &&Windows7无法更改域用户密码怎么办?
Windows7无法更改域用户密码怎么办?天极网软件频道 10:00
  问:有一台客户端无法更改域用户的密码,系统提示如下: security : “unable to update the password, tha value provided for the new password contains values that are not allowed in password”
  检查后发现密码确实符合复杂性要求,而且同一个密码在XP系统下是可以更改的。局域网中有几台Win 7的都有这种情况,在OWA中可以修改,但不可以用Alt+ Ctrl+ Del的方式修改,求解!
  答:根据你的描述,应该是因为客户端上的密码策略没与DC(域控制器)进行同步。在有问题的机器上执行下面的命令强行同步组策略:gpupdate /force
  然后重启电脑,完成组策略的同步就可以修改域用户的密码了。
(作者:论坛整理责任编辑:杨玲)
天极新媒体&最酷科技资讯扫码赢大奖
* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!
Win10系统在Win8的基础上对界面、特性以及跨平台方面做了诸多优化。
手机整机DIY企业级查看:11256|回复:14
助理工程师
域用户平时用来限制权限比较方便,比如共享文件限制,其他应用限制。但很多应用不需要用户电脑加入到域里来就能实现,或者用户不愿意加入到域里来。
这些服务还是要提供,那如何让用户自己修改自己的密码呢?
如果电脑加入域,可以在加入后提示修改密码,这我知道,但如果电脑不入域,可以通过什么解决方案,让用户修改密码。
我是一只小小小小牛
&&楼主可以参阅这个试试
热衷微软技术,技术成就梦想!
我的博客:
助理工程师
引用:原帖由 wfax0425 于
10:53 发表
http://hi.baidu.com/wzrayxx/item/291d1a3899cdbd0aceb9fea1&&楼主可以参阅这个试试 这个我也搜到了,这东东好像只有2003的才有。。。。。现在都2013了,公司一般都没用2003域控了。
我是一只小小小小牛
引用:原帖由 xuquanoo 于
10:58 发表
这个我也搜到了,这东东好像只有2003的才有。。。。。现在都2013了,公司一般都没用2003域控了。 &&TT 你怎么看
热衷微软技术,技术成就梦想!
我的博客:
初级工程师
计算机没加入到域里,不能使用域用户登录吗?
小欲望小满足才是大幸福
沉默是毁谤最好的答覆
当然不能啊
中级工程师
公司是否有exchange 邮件服务呢?
在线云服务-您身边的IT专家团 ...
引用:原帖由 wfax0425 于
11:29 发表
&&TT 你怎么看 给个思路吧:之前看到有文章是通过IIS发布一个网页,用户可以登录修改密码!具体的不是很清楚了!
在线云服务--您身边的IT专家团--
社区微软技术超级群-
高级工程师
有Exchange OWA 吗,可以从网上邮箱登陆修改
最简单的办法:
找一台已经加入域的机器,远程桌面过去
如果你的密码到期,但是计算机没加入域。可以直接远程桌面到DC,虽然可以验证身份并改密码,但是会提示你无权限登录。这样就实现了改密码的目的:lol1
最有价值午饭
可以设置一台公用加域的机器,没加域的用户,在这台服务器直接更改密码。
最有价值午饭
可以设置一台公用加域的机器,没加域的用户,在这台服务器直接更改密码。
我是一只小小小小牛
引用:原帖由 IT之梦 于
23:15 发表
给个思路吧:之前看到有文章是通过IIS发布一个网页,用户可以登录修改密码!具体的不是很清楚了! 我也记得看过这方面的实例&&但一时间找不到。&&嘿嘿 以为你有过这方面的经验
热衷微软技术,技术成就梦想!
我的博客:
提示: 作者被禁止或删除 内容自动屏蔽
初级工程师
装个Citrix web interface, 然后可以登录那里修改密码.

我要回帖

更多关于 域用户密码到期 的文章

 

随机推荐