我正在尝试让一些用户更新其在活动目录(AD)中的电子邮件地址。我正在尝试使用MembershipUser类实现它。但是出现“通用访问被拒绝错误”。这是我的代码:

        string userName = "sathish";

        System.Web.Security.MembershipUser userDetails = System.Web.Security.Membership.GetUser(userName);
        if (userDetails != null)
        {
            userDetails.Email = "[email protected]";
            System.Web.Security.Membership.UpdateUser(userDetails);  // getting access denied error here
        }


我的问题是


我是否需要适当的特权才能将电子邮件地址更新为AD?
我们是否有任何属性可以验证我当前的访问级别?
是否可以通过编程模拟特权来更新电子邮件地址?

最佳答案

如果您使用的是.NET 3.5及更高版本,则应签出System.DirectoryServices.AccountManagement(S.DS.AM)命名空间。在这里阅读所有内容:

Managing Directory Security Principals in the .NET Framework 3.5

基本上,您可以定义域上下文并轻松找到AD中的用户和/或组:

// set up domain context for your current, default domain
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find user by name
string userName = "sathish";
UserPrincipal user = UserPrincipal.FindByIdentity(userName );

// if user is found - update it's e-mail address and save
if(user != null)
{
   user.EmailAddress = "[email protected]";
   user.Save();
}


新的S.DS.AM使得与AD中的用户和组玩起来非常容易:

关于c# - 使用MembershipUser广告更新电子邮件地址-拒绝访问,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5424821/

10-13 03:18