2011-12-18 3 views
2

Есть ли способ изменить пароль пользователя на удаленном компьютере с использованием WMI? Я не мог найти какие-либо ресурсы на этом, поэтому любая помощь будет оценена.WMI- Изменить пароль пользователя на удаленном компьютере

благодаря

UPDATE Прежде всего, спасибо за быстрый ответ! Вы, парни, правы!

я просто хотел бы добавить, что мы не используем активный каталог, и мне нужно, чтобы написать свой код в C# ...

еще раз спасибо - больной взгляд в Whats предложил прямо сейчас

+1

подключен удаленный компьютер с помощью Active Directory? Если да, см. [Здесь] (http://blogs.technet.com/b/heyscriptingguy/archive/2004/10/15/how-can-i-change-a-user-s-password.aspx). Вы должны легко перевести код на C# ... –

+1

Я обновил свой ответ, чтобы включить ссылку на [другой вопрос SO] (http://stackoverflow.com/questions/234845/change-local-administrator -password-in-c-sharp), который говорит о локальных изменениях, но последний код выглядит так, как будто он должен работать и на удаленных машинах, и он уже на C#. –

ответ

3

Ну, это примеры VB Script в этом Hey Scripting Guy column, но они должны быть переводимым:

Как изменить пароль локального администратора для всех компьютеров в подразделении?

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().


И этот другой SO вопрос об изменении 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

Hah, I * just * отправил то же самое, что и комментарий. Это должно сработать. –

+1

@CodyGray - всякий раз, когда кто-либо упоминает использование WMI, чтобы сделать * X *, мой первый инстинкт - искать контент «Hey Scripting Guy» :-) –

+0

Damien_The_Unbeliever спасибо! К несчастью, его собственная нехватка знаний, которые удерживают меня здесь. Я не уверен, как перевести эти сценарии на C#, а решение в C# использует объект DirectoryEntry, а не ManagementObject .... поэтому я не могу двигаться вперед с этим. – JanivZ

Смежные вопросы