通过ASP.NET更改AD密码。 应用程序池在特权用户下运行时拒绝访问

我正在尝试为testing域构build一个自助式密码重置工具。 我正在使用ASP.NET 4和IIS 7。

我的代码:

string userDirectoryEntry = "WinNT://domain/" + usermapping[user[1]] System.DirectoryServices.DirectoryEntry ADEntryToReset = new System.DirectoryServices.DirectoryEntry(userDirectoryEntry); ADEntryToReset.Invoke("SetPassword", new object[] { newPassword }); ADEntryToReset.Properties["passwordExpired"][0] = 1; ADEntryToReset.CommitChanges(); 

但是,我提交密码更改时,拒绝访问。 我已将默认应用程序池更改为可以更改密码的pipe理员帐户下运行。 在Visual Studiodebugging器中正常工作。

我也尝试明确提供凭据到DirectoryEntry对象( msdn )。 这也是行不通的。

有任何想法吗?

您可能需要使用LDAP提供程序,而不是使用2000以前的WinNT提供程序,与LDAP相比,它有一些function限制。 userDirectoryEntrystring应该以LDAP://而不是WinNT://开头

如果使用凭据的msdn示例不起作用,请尝试使用凭据初始化DirectoryEntry对象:

 new DirectoryEntry(userDN,callerUsername,callerPwd); 

http://msdn.microsoft.com/en-us/library/wh2h7eed.aspx