【问题标题】:Change user password on remote computer using WMI使用 WMI 在远程计算机上更改用户密码
【发布时间】:2011-12-18 14:06:26
【问题描述】:

有没有办法使用 WMI 更改远程计算机上的用户密码?我找不到这方面的任何资源。

我想补充一点,我们没有使用活动目录,我需要用 C# 编写代码。

【问题讨论】:

  • 远程计算机是否通过 Active Directory 连接?如果是这样,请参阅here。您应该能够很容易地将代码翻译成 C#...
  • 我已经更新了我的答案以包含指向 another SO question 的链接,该链接讨论了本地更改,但最终代码看起来也应该适用于远程机器,而且它已经在 C# 中了。

标签: c# wmi


【解决方案1】:

嗯,这些是Hey Scripting Guy column 中的 VB 脚本示例,但它们应该是可翻译的:

如何更改 OU 中所有计算机的本地管理员密码?

Set objOU = GetObject("LDAP://OU=Finance, DC=fabrikam, DC=com")
objOU.Filter = Array("Computer")

For Each objItem in objOU
    strComputer = objItem.CN
    Set objUser = GetObject("WinNT://" & strComputer & "/Administrator")
    objUser.SetPassword("i5A2sj*!")
Next

第一部分是基于 AD 的,但只是用于查找域中的所有机器。第二部分(实际的远程密码重置)根本不依赖 AD。


所以,它基本上是绑定到WinNT://<ComputeName>/<UserName>,然后调用SetPassword()


关于更改 local admin account password 的其他 SO 问题已经在 C# 中:

public static void ResetPassword(string computerName, string username, string newPassword) { 
        DirectoryEntry directoryEntry = new DirectoryEntry(string.Format("WinNT://{0}/{1}", computerName, username)); 
        directoryEntry.Invoke("SetPassword", newPassword);
}

【讨论】:

  • 哈,我只是发布了与评论完全相同的内容。不过,这应该可行。
  • @CodyGray - 每当有人提到使用 WMI 来执行 X 时,我的第一反应就是去搜索“Hey Scripting Guy”内容:-)
  • Damien_The_Unbeliever 谢谢!不幸的是,我自己缺乏知识,这让我回到了这里。我不知道如何将这些脚本翻译成 c#,而 c# 中的解决方案使用 DirectoryEntry 对象而不是 ManagementObject .... 所以我真的不能继续前进。
  • @Janivz - 您是否尝试过按原样使用 C# 示例?它应该工作。 (我承认,目前我不能 100% 保证这一点,因为我现在只有一台机器)
  • @JanivZ - 如果您当前运行的帐户未在远程计算机上和/或不是远程计算机上的管理员帐户。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多