【问题标题】:Setting user password using C# does not work, any ideas?使用 C# 设置用户密码不起作用,有什么想法吗?
【发布时间】:2012-08-01 12:38:19
【问题描述】:

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

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

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

如果我使用以下方法:

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

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

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

有什么想法吗?

【问题讨论】:

  • 如果可能,请使用System.DirectoryServices.AccountManagement 命名空间,它更容易使用。 UserPrincipal 对象有一个 ChangePassword() 方法。

标签: c# directoryservices


【解决方案1】:

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

来自MSDN documentation

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

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

看看this related question,看看那里的答案是否有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 2017-11-25
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多