更改具有“当前密码=空”的远程计算机用户帐户的密码

时间:2013-05-23 14:45:11

标签: c# active-directory remote-access account directoryservices

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

我这样做:

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未处理   消息=访问被拒绝。

     

源=的System.DirectoryServices   错误码= -2147024891   堆栈跟踪:        在System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)        在System.DirectoryServices.DirectoryEntry.Bind()        在System.DirectoryServices.DirectoryEntry.RefreshCache()        在System.DirectoryServices.AccountManagement.PrincipalContext.DoMachineInit()        在System.DirectoryServices.AccountManagement.PrincipalContext.Initialize()        在System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx()        at System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithTypeHelper(PrincipalContext context,Type principalType,Nullable`1 identityType,String identityValue,DateTime refDate)        在System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext context,String identityValue)     InnerException:

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

1 个答案:

答案 0 :(得分:0)

远程登录具有空白密码的帐户存在限制。

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

解决方案:

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

2)使用psexec

从远程计算机运行脚本

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