sharepoint2007的功能之强大,大家有目共睹。但其自身总会存在一些瑕疵.许多人在抱怨产品组怎么不一起开发个修改密码的页面呢?其实这些只要我们自己动手就可以轻易的解决了。以下就是本次的Demo.
     前期准备:1.去MSDN查看DirectoryEntry,DirectorySearcher相关的属性和方法及使用。
                   2.新建一个web项目导入Microsoft.sharepoint 以及System.DirectoryServices。
                   3.打开项目属性,生成后事件:

copy "$(TargetDir)*.dll" C:\Inetpub\wwwroot\wss\VirtualDirectories\80\bin
                   copy "$(ProjectDir)*.ascx" C:\Inetpub\wwwroot\wss\VirtualDirectories\80   \wpresources\changepassword

Demo图片:

 
            
      
Demo代码:

  1using System;
  2using System.Data;
  3using System.Configuration;
  4using System.Collections;
  5using System.Web;
  6using System.Web.Security;
  7using System.Web.UI;
  8using System.Web.UI.WebControls;
  9using System.Web.UI.WebControls.WebParts;
 10using System.Web.UI.HtmlControls;
 11using Microsoft.SharePoint;
 12using System.DirectoryServices;
 13namespace ChangeADPasswordByVan
 14{
 15    public partial class ChangePassWord : System.Web.UI.UserControl
 16    {
 17        protected void Page_Load(object sender, EventArgs e)
 18        {
 19            BindUserName();
 20        }
 21
 22        //获取当前用户的登录名和名字
 23        public void BindUserName()
 24        {
 25            SPUser currentuser = SPContext.Current.Web.CurrentUser;
 26            lb_username.Text = currentuser.Name;
 27            lb_userloginname.Text=currentuser.LoginName;
 28        }
 29
 30        protected void btn_change_Click(object sender, EventArgs e)
 31        {
 32            string UserName = lb_username.Text;
 33            string[] DomainName = lb_userloginname.Text.ToString().Split(new char[] { '\\' });
 34           //获取域名
 35            string _DomainName = DomainName[0].ToString();
 36            string oldpass = txt_oldpassword.Text;
 37            string newpass = txt_newpasword.Text;
 38            if (txt_newpasword.Text != txt_newpassword1.Text)
 39            {
 40                lb_mesage.Text = "新密码不一致!";
 41            }
 42            else
 43            {
 44                //如果本机机器名和域名相同,就为本机用户。否则为域用户
 45                if (System.Environment.MachineName == Environment.UserDomainName)
 46                  {
 47
 48                        SPSecurity.RunWithElevatedPrivileges(delegate()
 49                        {
 50
 51                            lb_mesage.Text = ChangeLocalUserPassword(Environment.MachineName, UserName, oldpass, newpass, "", "");
 52
 53                        });
 54                   }
 55                 else
 56                  {
 57
 58                        lb_mesage.Text = ChangeADUserPassword(_DomainName, UserName, oldpass, newpass);
 59                  }
 60            
 61              
 62            }
 63
 64
 65        }
 66
 67        protected void btn_cansle_Click(object sender, EventArgs e)
 68        {
 69            txt_newpassword1.Text = "";
 70            txt_newpasword.Text = "";
 71            txt_oldpassword.Text = "";
 72        }
 73       
 74        更改密码主要代码(本代码段,参考DosBoy)#region 更改密码主要代码(本代码段,参考DosBoy
 75      
 76        
 77        //更改AD用户密码
 78        public string ChangeADUserPassword(string DomainName, string UserName, string oldPass, string newPass)
 79        {
 80            try
 81            {
 82                string strLDAP = "LDAP://" + DomainName;
 83                using (DirectoryEntry objDE = new DirectoryEntry(strLDAP, DomainName+"\\"+UserName, oldPass))
 84                {
 85                    DirectorySearcher deSearcher = new DirectorySearcher(objDE);
 86                    //查找赛选当前用户是否在域组织里
 87                    deSearcher.Filter = "(&(objectClass=user)(sAMAccountName=" + UserName + "))";
 88                    DirectoryEntry usr = deSearcher.FindOne().GetDirectoryEntry();
 89                    usr.Invoke("ChangePassword", new Object[2] { oldPass, newPass });
 90                    //保存更改
 91                    usr.CommitChanges();
 92                }
 93                return ("更改域用户密码,操作成功!");
 94            }
 95            catch (Exception ex)
 96            {
 97                return ("更改失败,错误信息:"+ ex.Message);
 98            }
 99
100        }
101
102        //更改本机用户密码
103        public string ChangeLocalUserPassword(string LocalHostName, string UserName, string oldPass, string newPass, string AdminName, string AdminPass)
104        {
105           
106                try
107                {
108                    DirectoryEntry AD = new DirectoryEntry("WinNT://" + LocalHostName + ",computer");
109                    DirectoryEntry NewUser = AD.Children.Find(UserName);
110                    NewUser.Invoke("SetPassword", new object[] {newPass });
111                    NewUser.CommitChanges();
112                    
113                    return ("更改本机密码,操作成功!");
114
115                }
116                catch (Exception ex)
117                {
118                    return ("更改失败,错误信息:"+ex.Message );
119                }
120           
121        }
122        #endregion
123
124    }
125}

Demo源码

 1<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ChangePassWord.ascx.cs" Inherits="ChangeADPasswordByVan.ChangePassWord" %>
 2<table border="1" cellpadding="0" cellspacing="0" style="width:350px">
 3    <tr>
 4        <td style="width:138px; height: 30px;">
 5            当前用户:</td>
 6        <td style="height: 30px; background:#EBF3FF">
 7            <asp:Label ID="lb_username" runat="server" Text=""></asp:Label></td>
 8    </tr>
 9    <tr>
10        <td style="width:138px; height: 30px;">
11            登入名:</td>
12        <td style="height: 30px; background:#EBF3FF">
13            <asp:Label ID="lb_userloginname" runat="server" Text=""></asp:Label></td>
14    </tr>
15   <tr>
16        <td style="width:138px; height: 30px;">
17            旧密码<span style="color: #ff0000">*</span>:</td>
18           <td style="height: 30px; background:#EBF3FF">
19                <asp:TextBox ID="txt_oldpassword" runat="server" TextMode="Password"></asp:TextBox></td>
20    </tr>
21    <tr>
22        <td style="width:138px; height: 30px;">
23            新密码<span style="color: #ff0033">*</span>:</td>
24           <td style="height: 30px; background:#EBF3FF">
25                <asp:TextBox ID="txt_newpasword" runat="server" TextMode="Password"></asp:TextBox></td>
26    </tr>
27    <tr>
28        <td style="width:138px; height: 30px;">
29            再次输入新密码<span style="color: #ff0000">*</span>:</td>
30           <td style="height: 30px; background:#EBF3FF">
31               <asp:TextBox ID="txt_newpassword1" runat="server" TextMode="Password"></asp:TextBox></td>
32    </tr>
33    <tr>
34        <td style="width:100%;"colspan="2">
35            <asp:Button ID="btn_change" runat="server" Text="修改" OnClick="btn_change_Click" />
36            <asp:Button ID="btn_cansle" runat="server" Text="取消" OnClick="btn_cansle_Click" />
37            <asp:Label ID="lb_mesage" runat="server" ForeColor="Red"></asp:Label></td>
38    </tr>
39</table>
40

转载于:https://www.cnblogs.com/zhengyongfeng/archive/2009/07/20/1527256.html

修改MOSSAD用户密码或本地用户密码相关推荐

  1. vsftpd创建虚拟用户,解决本地用户不安全问题,增强服务器安全性

    转载来源 : vsftpd创建虚拟用户,解决本地用户不安全问题,增强服务器安全性 : 摘要: 前面两篇介绍VSFTPd服务器的匿名用户和本地用户访问,基本满足文件的上传下载任务,今天给大家说说虚拟用户 ...

  2. Linux中搭建FTP服务器,匿名用户访问、本地用户访问、虚拟用户访问(详细解答安装配置步骤)

    对于Linux搭建服务器步骤详解:可以基于匿名访问.本地用户访问.虚拟用户访问 FTP服务访问可分为三种 匿名用户:用户名为ftp或者anonymous,提供任意密码或无密码访问即可. 本地用户:要求 ...

  3. 本地计算机用户管理,管理本地用户与组账户

    (1) 每台 Windows计算机都有一个"本地安全帐户管理器",称为 Security Accounts Manager database (SAM)数据库. (2) " ...

  4. win11如何登陆本地用户 windows11登陆本地用户的步骤方法

    自从win11系统发布之后,吸引了很多用户前往下载体验,很多用户在体验的过程中遇到很多问题不知道该如何解决,在使用该系统的时候,很多用户不知道如何进行本地账户的登陆,下面,小编就把windows当中如 ...

  5. samba文件共享(匿名用户共享、本地用户共享、windows+linux系统之间的共享)

    理论基础: samaba 共享 samaba:使用smb协议的应用程序 主要用于文件共享     区别: nfs实现同系统之间的共享 linux--linux samba服务实现的是不同系统 linu ...

  6. 忘记本地mysql密码_本地MySQL密码忘了,怎么找回?

    展开全部 MySQL密码通常保存在mysql数据库中,我们可以在访问数据之后,使用如下指令进32313133353236313431303231363533e58685e5aeb93133336564 ...

  7. vsftp本地用户,虚拟用户,匿名用户同时工作

    vsftpd+mysql  实现本地用户,匿名用户,虚拟用户同时工作 大纲 1.安装vsftpd mysql  pam-mysql 2.添加虚拟用户(使用本地数据库和数据库服务器) 3.实现本地用户, ...

  8. 域内计算机本地管理员密码管理

    随着互联网技术的不断发现,信息安全在企业中的受重视度也越来越高,终端管理是信息安全中至关重要的一环,不可能要求终端用户和服务器管理员有着一样的安全隐患意识和技术水平,因此在终端管理员层如何制定完善终端 ...

  9. 在计算机上创建一个本地用户账户,多种方法教你创建和删除Win10本地账户?

    Win10系统如何创建和删除本地账户?现在使用Win10系统的朋友越来越多了,有位Windows10用户反映自己因为刚刚升级系统,所以对系统中的很多操作都很陌生.尤其是对Win10系统中添加和删除用户 ...

最新文章

  1. Android系统的命令行操作及C程序编译
  2. Win7安装64位CentOS 6.4双系统详细过程
  3. python日期加减源码_Python 时间序列的时间延迟计算
  4. 前K个高频元素(top k)(TX)
  5. tomcat6的项目能直接在tomcat7上用吗_极尽人性化的设计: 能“隐形”的笔记本电脑支架...
  6. 【flume】flume的安装配置理解
  7. 《CCNA学习指南:数据中心(640-911)》——2.2 网络互联模型
  8. java打印菱形图案
  9. IO模型《二》阻塞IO
  10. 人人网是明文传输,所以只要抓包就能知道用户名和密码
  11. QT Designer中编辑菜单栏技巧
  12. c语言输出成绩与排名,C语言算成绩 要求输完两个分数后 同时输出两个分数换算出来的成绩...
  13. 设置浏览器谷歌/edge浏览器允许跨域
  14. 周轶璐教授:服务好医生,如何更全面地了解数据、利用数据?
  15. 推荐系统之AFM代码详解
  16. web前端学习(三):微信小程序基于H5规范,开发Android应用程序
  17. 【Alpha阶段】第四次scrum meeting
  18. 基于DCNN的xception模型
  19. python html做界面_用Html来写Python桌面软件的UI界面-htmlPy
  20. javascript制作钟表

热门文章

  1. Linux RPC中XDR 外部数据编码实例
  2. ESP8266 ESP-01S模块使用及AT命令
  3. 写论文时要用到的word技巧
  4. 黑马旅游项目完成以及相关注意事项
  5. E. Marbles
  6. 学会这些修图技巧,让你的女神成为朋友圈中的主角
  7. 利用您的内容获利:使用UMP创建会员WordPress网站
  8. 5.5 C语言练习(数日子:要求输出三个整数,分别代表年月日。例如 2018 7 19 当2018年1月1日为第一天,那么7月19日是第多少天?)
  9. SQL查询结果限制返回行数
  10. 查找算法之三:斐波那契查找(黄金分割法)