WMI-更改远程计算机上的用户密码

问题描述:

有没有方法使用WMI更改远程计算机上的用户密码? 我找不到任何资源,所以任何帮助,将不胜感激。WMI-更改远程计算机上的用户密码

感谢

UPDATE首先感谢您的快速答复!你们统治!

我只是想,我们没有使用Active Directory,我需要写我的代码在C#中添加...

再次感谢 - 生病的样子成什么现在

+1

是通过Active Directory连接远程计算机?如果是这样,请参阅[这里](http://blogs.technet.com/b/heyscriptingguy/archive/2004/10/15/how-can-i-change-a-user-s-password.aspx)。你应该能够很容易地将代码翻译成C#... – 2011-12-18 14:12:17

+1

我已经更新了我的答案,以包含一个[另一个SO问题]的链接(http://*.com/questions/234845/change-local-administrator -password-in-c-sharp),它讨论了本地更改,但最终的代码看起来应该也适用于远程机器,并且它已经在C#中。 – 2011-12-18 14:22:04

正确的建议好,这些是这个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其他等问题已经在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); 
} 
+0

哈,我*只是*发布了与评论完全相同的内容。尽管如此,这应该起作用。 – 2011-12-18 14:13:55

+1

@CodyGray - 每当有人提到使用WMI来做* X *时,我的第一本能就是去搜索“Hey Scripting Guy”内容:-) – 2011-12-18 14:18:40

+0

Damien_The_Unbeliever谢谢!不幸的是,我自己缺乏知识,这使我难以忍受。我不知道如何将这些脚本翻译成C#,并在C#中的解决方案使用DirectoryEntry对象,而不是说管理对象....所以我真的不能前进这一点。 – JanivZ 2011-12-18 14:26:24