修改用户密码的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的执行权限总是管理员么?