如何给远程计算机添加用户,如何访问远程计算机以添加/删除/管理用户帐户?...

我有一个场景,我需要访问远程计算机以编程方式添加和删除Windows用户帐户 . 远程机器是一个“备用工作站”,我需要远程配置,准备好以防万一主工作站需要更换 - 所以这里没有安全绕过或恶意软件:)

我知道远程机器管理员的用户/密码,我能够使用WMI Win32_UserAccount检索现有用户帐户的完整列表 . 现在,我正在尝试为每个用户获取一个UserPrincipal对象(最终将其删除),但我的所有尝试都获得了异常 .

尝试#1:

PrincipalContext context = new PrincipalContext(ContextType.Domain, "xxx.xxx.xxx.xxx" /*remote IP Address*/);

UserPrincipal user = (UserPrincipal.FindByIdentity(context, "userName"));

// Do something with user, like user.Delete();

在这种情况下,我总是在第一行得到一个例外:

System.DirectoryServices.AccountManagement.PrincipalServerDownException已被捕获Message =无法联系服务器 . Source = System.DirectoryServices.AccountManagement StackTrace:System.DirectoryServices.AccountManagement中的System.DirectoryServices.AccountManagement.PrincipalContext.ReadServerConfig(String serverName,ServerProperties&properties)中的System.DirectoryServices.AccountManagement.PrincipalContext.DoServerVerifyAndPropRetrieval()中的System.DirectoryServices.AccountManagement.AccountManagement.PrincipalContext . System.DirectoryServices.AccountManagement.PrincipalContext..ctor中的ContextType contextType,String name,String container,ContextOptions options,String userName,String password)(ContextType contextType,String name,String container,String userName,String password)InnerException:System.DirectoryServices .Protocols.LdapException Message = LDAP服务器不可用 . Source = System.DirectoryServices.Protocols ErrorCode = 81 StackTrace:System.DirectoryServices.Protocols中的System.DirectoryServices.Protocols.LdapConnection.Connect(),System.DirectoryServices.Protocols.LdapConnection中的SystemRequestConnection.SendRequestHelper(DirectoryRequest request,Int32&messageID) . System.DirectoryServices.AccountManagement.PrincipalContext.ReadServerConfig(String serverName,ServerProperties&properties)中的System.DirectoryServices.Protocols.LdapConnection.SendRequest(DirectoryRequest请求)中的SendRequest(DirectoryRequest请求,TimeSpan requestTimeout)InnerException:

尝试#2:

PrincipalContext context = new PrincipalContext(ContextType.Machine, "xxx.xxx.xxx.xxx" /*remote IP Address*/);

UserPrincipal user = (UserPrincipal.FindByIdentity(context, "userName"));

// Do something with user, like user.Delete();

在这种情况下,我总是在第二行得到一个例外:

System.IO.FileNotFoundException被捕获Message =找不到网络路径 . Source = Active Directory StackTrace:System.DirectoryServices.Antory中的System.DirectoryServices.Interop.Unsafe服务中的System.DirectoryServices.Interop.UnsafeNativeMethods.IAds.GetInfo()中的System.DirectoryServices.AccountManagement.PrincipalContext.DoMachineInit(),System.DirectoryServices.AccountManagement.PrincipalContext System.DirectoryServices.AccountManagement中System.DirectoryServices.AccountManagement.Principal.FindBdentIdentityWithTypeHelper(PrincipalContext上下文,Type principalType,Nullable`1 identityType,String identityValue,DateTime refDate)中的System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx()中的.Initialize() System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext context,String identityValue)中的.Principal.FindByIdentityWithType(PrincipalContext context,Type principalType,String identityValue)InnerException:

我尝试了PrincipalContext对象的不同签名(使用域名而不是IP地址,用户名和密码,......)但我总是在两次尝试中都获得例外 .

我错过了一些指示吗?在创建PrincipalContext对象之前,是否需要使用模拟来获得对远程计算机的完全访问权限?还有其他方法来完成我想要做的事情吗? (即访问远程计算机以添加/删除Windows帐户)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值