0

我们设置了一个小型库 (DLL),用于更新 AD 中的密码。在我们的测试应用程序中测试这个应用程序时,它工作得很好。但是,一旦我们开始在另一个应用程序中使用该库,我们就会在尝试更改密码时收到拒绝访问错误。

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

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

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

4

1 回答 1

1

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

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

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

于 2012-06-07T22:05:12.093 回答