zoukankan      html  css  js  c++  java
  • Sharepoint增加修改密码功能

    Sharepoint中没有自带的修改密码的功能。

    如果使用的是AD验证,修改密码,只要修改域帐号的用户名密码就可以了。以下代码可以修改本机密码和域帐号密码。

    做法是,添加一个webpart,做一个页面,在右上角的Site Settings里面添加一个菜单项目,链接到修改密码页面。

    //ChangeADUserPassword("ADName", "Name", "oldPwd", "newPwd")
    public string ChangeADUserPassword(string DomainName, string UserName, string oldPass, string newPass)
    {
        try
        {
            string strLDAP = "LDAP://" + DomainName;
            string fullLoginName = DomainName + "\" + UserName;
            using (DirectoryEntry bjDE = new DirectoryEntry(strLDAP, DomainName + "\" + UserName, oldPass))
            {
                DirectorySearcher deSearcher = new DirectorySearcher(objDE);
                deSearcher.Filter = "(&(objectClass=user)(sAMAccountName=" + UserName + "))";
                DirectoryEntry usr = deSearcher.FindOne().GetDirectoryEntry();
                usr.Invoke("ChangePassword", new Object[2] { oldPass, newPass });
                usr.CommitChanges();
            }
            return ("Change domain user password successed!");
        }
        catch (Exception ex)
        {
            return ("Change domain user password failed, error message:" + ex.Message);
        }
    }
    public static string ChangeLocalUserPassword(string LocalHostName, string UserName, string oldPass, string newPass, string AdminName, string AdminPass)
    {
        try
        {
            DirectoryEntry AD = new DirectoryEntry("WinNT://" + LocalHostName + ",computer");
            DirectoryEntry NewUser = AD.Children.Find(UserName);
            NewUser.Invoke("SetPassword", new object[] { newPass });
            NewUser.CommitChanges();
            return ("Change local machine password successed!");
        }
        catch (Exception ex)
        {
            return ("Change local machine password failed, error message:" + ex.Message);
        }
    }
    
    //whether the machine name and AD name is the same to deside use which method to change the password.    
    if (Environment.MachineName == Environment.UserDomainName)
    {
        SPSecurity.RunWithElevatedPrivileges(delegate() { lblErrorMessage.Text = ChangeLocalUserPassword(Environment.MachineName, lblMessage.Text.Substring(0, lblMessage.Text.IndexOf(" ")), txtOldPassword.Text, txtNewPassword.Text, "", ""); });
    }
    else
    {
        lblErrorMessage.Text = ChangeADUserPassword(Environment.UserDomainName, Environment.UserName, txtOldPassword.Text, txtNewPassword.Text);
    }

    参考博客地址:http://www.cnblogs.com/dosboy/archive/2007/08/01/838859.html

  • 相关阅读:
    IntelliJ Idea和IntelliJ webstrm 常用快捷键
    mybatis基础学习2---(resultType和resultMap的用法和区别)和setting的用法
    使用观察者模式观察线程的生命周期
    观察者设计模式介绍
    java的内存模型及缓存问题
    一个解释volatile关键字作用的最好的例子
    多线程的waitset详细介绍
    浅谈单例模式
    SimpleThreadPool给线程池增加自动扩充线程数量,以及闲时自动回收的功能
    SimpleThreadPool给线程池增加拒绝策略和停止方法
  • 原文地址:https://www.cnblogs.com/batter152/p/4863364.html
Copyright © 2011-2022 走看看