2011-12-18 66 views
2

有沒有方法使用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://stackoverflow.com/questions/234845/change-local-administrator -password-in-c-sharp),它討論了本地更改,但最終的代碼看起來應該也適用於遠程機器,並且它已經在C#中。 – 2011-12-18 14:22:04

回答

3

正確的建議好,這些是這個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

相關問題