我想在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();
}
}
答案 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
}