1

我需要重置用户密码。为此,我使用以下代码:

DirectoryEntry de = ..
de.AuthenticationType = AuthenticationType.Secure
de.Password = txtPassword.text
de.CommitChanges()

当我运行代码时 - 没有任何反应。用户密码不变,不抛出异常。

如果我使用以下方法:

de.Invoke("SetPassword", .. );

当我运行代码时,我收到一条消息:请插入智能卡...

我对用户帐户拥有管理员权限。用户没有为智能卡设置无人机。

有任何想法吗 ?

4

1 回答 1

3

DirectoryEntry 类的 Password 属性不是您想象的那样。您不是在更改用户的密码,而是在更改用于从 DirectoryEntry 对象访问更多信息的密码。

MSDN 文档

您可以设置用户名和密码属性以指定用于访问 Active Directory 域服务中信息的备用凭据。从此实例(例如,通过 Children)检索到的任何其他 DirectoryEntry 对象都使用相同的备用凭据自动创建。

使用第二种方法,如果您被要求插入智能卡,我怀疑这与您正在修改的用户有任何关系 - 它更有可能要求您的智能卡。如果您也没有设置使用智能卡,那么我真的不确定它为什么要您使用智能卡。

看看这个相关的问题,看看那里的答案是否有帮助。

于 2012-08-01T12:58:26.350 回答