修改用户密码的Web Part,总是提示访问被拒绝

一睡不醒 2010-07-30 04:38:39
因为有很多用户经常忘记密码,所以想做一个重置密码的功能,参考网上的这个方法:
public static bool ChangePwd(string UserName, string defaultPwd)
{
try
{
DirectoryEntry MachineDirectoryEntry;
MachineDirectoryEntry = new DirectoryEntry("WinNT://" + System.Environment.MachineName);
DirectoryEntry CurrentDirectoryEntry = MachineDirectoryEntry.Children.Find(UserName);
CurrentDirectoryEntry.Invoke("SetPassword", defaultPwd);
CurrentDirectoryEntry.CommitChanges();
CurrentDirectoryEntry.Close();
return true;
}
catch (Exception exp)
{
if (exp.InnerException.Message.Replace("'", "").IndexOf("网络密码不正确") != -1)
}
}
开始在VS里建了一个站点,用一个文本框来输入用户名,结果修改成功。
于是把这个功能封装成WEBPART部署到GAC,发现问题来了,用站点管理员(同时也是系统管理员)执行是成功的,换成一个普通用户登陆就会报错:“General Access Defined Error/r/n",Souce是“Active Directory".
然后我想会不会是因为要修改密码,所以需要权限较高,于是将这个普通用户添加到管理员组,执行成功。
有点疑惑,webpart中的事件在执行的时候是以什么账户执行的,当前登陆账户么?可以修改这个webpart的执行权限总是管理员么?
...全文
53 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
一睡不醒 2010-08-04
  • 打赏
  • 举报
回复
我错了,这两天比较忙,没怎么上论坛。结贴结贴
Justin-Liu 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mfx1986 的回复:]
引用 1 楼 foxdave 的回复:
改密码没有管理员权限肯定不能执行的啊。。。
webPart的话 可以用SPSecurity.Run什么什么那个方法 网上一搜就有了 就变成了System Account
默认是当前登录用户

找到了,在亮剑那本书里看到了具体的说明,用
SPSecurity.RunWithElevatedPrivileges(delegete()
{
//……
[/Quote]
结贴要及时
一睡不醒 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 foxdave 的回复:]
改密码没有管理员权限肯定不能执行的啊。。。
webPart的话 可以用SPSecurity.Run什么什么那个方法 网上一搜就有了 就变成了System Account
默认是当前登录用户
[/Quote]
找到了,在亮剑那本书里看到了具体的说明,用
SPSecurity.RunWithElevatedPrivileges(delegete()
{
//代码部分
});
谢啦!
shadan05 2010-08-02
  • 打赏
  • 举报
回复
我靠,很明显是没权限啊老兄,要管理员才能改。
Justin-Liu 2010-07-30
  • 打赏
  • 举报
回复
改密码没有管理员权限肯定不能执行的啊。。。
webPart的话 可以用SPSecurity.Run什么什么那个方法 网上一搜就有了 就变成了System Account
默认是当前登录用户

3,242

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 SharePoint
社区管理员
  • SharePoint社区
  • 霖雨
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧