我正在尝试为测试域构建自助密码重置工具。我使用的是 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();
但是,当我提交密码更改时,访问被拒绝。我已将默认应用程序池更改为在可以更改密码的管理员帐户下运行。在 Visual Studio 调试器中运行良好。
我也尝试过明确向 DirectoryEntry 对象提供凭据(微软)。这也不起作用。
有任何想法吗?
答案1
您可能希望使用LDAP
提供程序,而不是 2000 年之前的WinNT
提供程序,后者与 相比有一些功能限制LDAP
。userDirectoryEntry
字符串应该以 开头,LDAP://
而不是WinNT://
如果带有凭据的 msdn 示例不起作用,请尝试使用DirectoryEntry
凭据初始化对象:
new DirectoryEntry(userDN,callerUsername,callerPwd);