2011-03-24 107 views
2

我正在尝试配置一些用户更新他们在活动目录(AD)中的电子邮件地址。我试图用MembershipUser类来实现它。但获得'一般访问被拒绝错误'。这里是我的代码: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 
     } 

我的问题是,

  1. 我需要适当previleges更新电子邮件地址AD?

  2. 我们是否有任何属性来验证我目前的访问级别?

  3. 是否可以以编程方式模拟特权来更新电子邮件地址?

回答

1

如果您使用的是.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的用户和群体玩:

+1

感谢您的响应和链接!事实上,它帮助我接近这个问题。一旦我确定了这一点,我会回应。 正如你所说的,Account Maangement提供了很多更多的服务,我正在用这个AccountManagement服务重写我的ActiveDirectory提供程序。 – 2011-03-26 10:10:31