当前位置: 代码迷 >> SharePoint >> Sharepoint增多修改密码功能
  详细解决方案

Sharepoint增多修改密码功能

热度:385   发布时间:2016-05-02 06:52:32.0
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

  相关解决方案