无法使用C#和管理员用户设置密码和启用帐户

无法使用C#和管理员用户设置密码和启用帐户,c#,active-directory,C#,Active Directory,使用WPF&C#,我可以设置Active Directory中的所有属性,但无法执行以下操作: 1) 无法设置用户密码 2) 无法启用用户 但是,我可以手动执行相同的操作 尝试的方法: 一, 二, 三, 密码设置错误:目标调用引发异常 启用用户时出错:访问被拒绝 注意:我使用的是域管理员用户 程序在上面几行中给出了异常 请,忠告!提前谢谢 也许这只是您的问题中的一个错误,但是您在第一个示例中显示的代码无法编译,因为密码不在引号中。应该是: directoryEntry.Invoke("SetPa

使用WPF&C#,我可以设置Active Directory中的所有属性,但无法执行以下操作:

1) 无法设置用户密码

2) 无法启用用户

但是,我可以手动执行相同的操作

尝试的方法:

一,

二,

三,

密码设置错误:目标调用引发异常

启用用户时出错:访问被拒绝

注意:我使用的是域管理员用户

程序在上面几行中给出了异常


请,忠告!提前谢谢

也许这只是您的问题中的一个错误,但是您在第一个示例中显示的代码无法编译,因为密码不在引号中。应该是:

directoryEntry.Invoke("SetPassword", new object[] {"myPass@x6712"});
该代码调用。要点指出了它工作的一些先决条件,即它必须是一个安全连接。因此,它可能无法建立安全连接。它通常会尝试这样做,所以那里可能出了问题

您可以通过将LDAPS(LDAP over SSL)指向端口636(
new DirectoryEntry(“LDAP://example.com:636/CN=where,DC=example,DC=com”)
)来尝试通过LDAPS(LDAP over SSL)进行特定连接,但这需要您信任提供的证书。有时它是一个自签名证书,因此您需要将该证书添加到您运行此操作的任何计算机上的受信任证书中

或者,您运行它的帐户没有该帐户的“重置密码”权限

对于启用,该属性是位标志,因此您不希望将其设置为
2
,主要是因为
2
(或者更准确地说,第二位)意味着它被禁用。因此,您要取消设置第二位。您可以这样做:

directoryEntry.Properties["userAcountControl"].Value =
    (int) directoryEntry.Properties["userAcountControl"].Value & ~2;
大多数情况下,这将导致值
512
NORMAL\u ACCOUNT
),但不一定。该帐户可以设置其他位,您不希望无意中取消设置

您还需要调用对
userAcountControl
的更改才能生效:

directoryEntry.CommitChanges();

作为一名高级应用程序开发人员和一年多的会员,您会考虑发布堆栈跟踪吗?请访问帮助中心并查看链接<代码>没有任何帮助!程序在上面几行给出了异常,这个异常是什么,我没有看到。请更新您的帖子以包含相关信息,以便我们帮助您,否则我们将毫无帮助,谢谢。
目标调用引发异常
此错误是因为这一行的
调用
导致的:
directoryEntry.invoke(“SetPassword”),new object[]{myPass@x6712});。。。对于这种错误,我知道事实上,您将有一个堆栈跟踪,它将告诉我们有关此错误的更多信息。另外,听起来当前用户没有这样做的特权,您是否尝试过设置应用程序的执行级别?例如,在应用程序清单文件中:
…是!执行级别为“requireAdministrator”,也尝试使用“highestAvailable”选项。我正在做的一切都接受“安全连接!”!这有什么影响?对不起,我不明白你在说什么。你能重新措辞吗?在试图设置密码时没有安全通信!正如你提到的,我在做其余的事情。
directoryEntry.Invoke("SetPassword", new object[] {"myPass@x6712"});
directoryEntry.Properties["userAcountControl"].Value =
    (int) directoryEntry.Properties["userAcountControl"].Value & ~2;
directoryEntry.CommitChanges();