以编程方式在 AD 中更改密码时访问被拒绝

本文关键字:密码 访问 拒绝 方式 编程 AD | 更新日期: 2023-09-27 18:33:52

我们已经设置了一个用于在AD中更新密码的小库(DLL)。在我们的测试应用程序中测试此应用程序时,它完全可以正常工作。但是,一旦我们开始在另一个应用程序中使用该库,就会在尝试更改密码时出现"拒绝访问"错误。

当我们调用任何其他函数时,例如执行简单查找以查看用户是否存在的函数,一切正常。

    PrincipalContext ctx = new PrincipalContext(ContextType.Domain, TargetDomainServer, TargetDomainContainer, TargetDomainUser, TargetDomainPassword);
    UserPrincipalExt user = UserPrincipalExt.FindByIdentity(ctx, userLogonName);
    user.SetPassword(userPassword);

关于我做错了什么的任何想法?

以编程方式在 AD 中更改密码时访问被拒绝

您的测试应用程序可能以管理员身份运行。要么是因为它从您的 IDE 运行,要么是因为它有一个带有 requestedExecutionLevel 的清单。

在 Windows Vista 和 7 上,以普通用户身份登录时运行应用程序并不意味着进程不以管理员身份运行。标有 requestedExecutionLevel 的可执行文件会自动提升。尝试以管理员身份运行测试应用程序,方法是右键单击它并选择它。

还有没有任何故意执行标记的自动提升。Windows 有一个已知安装程序的内部列表。它实际上通过版本信息和二进制签名识别其中一些,并尝试以管理员身份运行它们,以便安装实际上会成功。IIRC,另一种识别方法是文件名。名为 setup.exe 的可执行文件也会提升(只要requestedExecutionLevel不覆盖它)。