在sharepoint webpart中更改活动目录密码

时间:2015-10-10 07:22:09

标签: c# asp.net windows sharepoint active-directory

我想在SharePoint的Web部件中更改活动目录密码,但是当我更改密码时,SharePoint中存储的帐户密码不会更改,我收到此错误:

  

此操作只能在具有SQL Server权限以从配置数据库中读取的用户加入服务器场的计算机上执行。若要将此服务器连接到服务器场,请使用位于Microsoft SharePoint 2010产品的“开始”菜单上的SharePoint产品配置向导。

这是我更改密码的代码:

 public void ChangePassword(string usrDomain, string username, string oldPassword, string newPassword)
   {
       using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, usrDomain, username, oldPassword))
       {
           UserPrincipal user = new UserPrincipal(ctx);
           user = UserPrincipal.FindByIdentity(ctx, username);
           user.ChangePassword(oldPassword, newPassword);
           user.Save();

       }
   }

1 个答案:

答案 0 :(得分:0)

假设您的AD服务器位于“sharepoint场”中,您必须使用其他帐户运行代码。 解决方案是模拟具有AD服务器权限的管理员用户令牌:

SPUser AdminUser = SPContext.Current.Web.SiteUsers[@"domain\username"];
using(SPSite oSiteCollection = new SPSite("http://YOURSITE", AdminUser.UserToken))
{
     //run your code
}