在Windows Server 2008 R2上重置密码

3

我们有一个运行在独立服务器上的员工自助应用程序。 该应用程序的一个功能是“忘记密码”,因此员工可以重置自己的密码。 它在所有服务器上都正常工作,但在Windows Server 2008 R2上却无法正常工作。以下是我们使用的代码片段:

User.Invoke("SetPassword", new object[] {"#12345Abc"});
User.CommitChanges();

看起来在Windows Server 2008 R2上根本无法使其工作。

如果有人使其工作,请帮忙。

谢谢。


我们遇到了异常:"一般访问被拒绝错误"。这很奇怪。我们提供了本地管理员组中某个用户的用户名和密码。 - Dionysus
你说提供了管理员用户的用户名/密码是什么意思?你在哪里提供了这些信息?应用程序池运行在哪个用户下?最后,你是否检查了服务器的安全事件日志以查看尝试调用的用户是谁? - NotMe
我们在用户登录下以管理员权限启动了应用程序。但我们并没有作为管理员本身登录。在管理员登录下,应用程序可以正常工作。 - Dionysus
2个回答

1

我们也尝试了这个:

PrincipalContext context = new PrincipalContext(ContextType.Machine, "servername");

UserPrincipal up = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "username");
if (up != null)
{
    up.SetPassword("newpassword");
    // We got the same access denied exception here
    up.Save();
}

1
你能看到审计日志,了解用户尝试更改密码的情况吗?当你调用AD时,你是使用当前用户身份进行操作的。显然,在Win2k8r2下,该身份是不同的。 - fejesjoco
看起来微软在SetPassword上加了更多的安全限制。我们使用与用户访问控制相关的本地安全策略设置,在Windows Server 2008上使其工作。 - Dionysus

1
尝试使用UserPrincipal.SetPassword。它是一个更高级的抽象,因此更加智能。它将知道调用哪个更低级别的功能。在我看来,调用方式似乎过于脆弱。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接