0

我想更改远程机器用户帐户的密码。

我正在这样做:

PrincipalContext context = new PrincipalContext(ContextType.Machine, "xxx.xxx.xxx.xxx" /*Remote machine IP address*/, "RemoteAdminUserName", "RemoteAdminPassword");
UserPrincipal user = (UserPrincipal.FindByIdentity(context, "RemoteAdminUserName"));
user.SetPassword("RemoteAdminNewPassword");
user.Save();

此代码正常工作,除非我尝试将密码设置为旧密码为空的帐户。在这种情况下,我有以下例外UserPrincipal.FindByIdentity

System.Runtime.InteropServices.COMException 未处理消息=访问被拒绝。

Source=System.DirectoryServices ErrorCode=-2147024891 StackTrace:在 System.DirectoryServices.DirectoryEntry.Bind() 在 System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) 在 System.DirectoryServices.DirectoryEntry.RefreshCache() 在 System.DirectoryServices.AccountManagement。 System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx() 中 System.DirectoryServices.AccountManagement.PrincipalContext.Initialize() 中的 PrincipalContext.DoMachineInit()。 , String identityValue, DateTime refDate) 在 System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext context,字符串标识值)内部异常:

在没有密码保护的帐户中使用 PrincipalContext 是否有一些限制?如何为没有设置任何当前密码的远程计算机用户帐户设置密码?

4

1 回答 1

0

远程登录使用空白密码的帐户是有限制的。

您可以在本地运行脚本以更改密码,但您可以使用 psexec 运行“本地”脚本。

解决方案:

1)编写一个脚本来更改本地用户的密码

2) 使用 psexec 从远程计算机运行脚本

远程计算机必须具有带密码的管理用户帐户,否则您将无法远程登录。

于 2013-06-04T12:08:47.107 回答