Изменить пароль локального администратора в C # - PullRequest
9 голосов
/ 24 октября 2008

Я ищу способ изменить пароль учетной записи локального пользователя (локального администратора) на компьютере с Windows (в данном случае XP). Я прочитал статью CodeProject об одном способе сделать это, но это не кажется «чистым».

Я вижу, что это возможно сделать с WMI , так что это может быть ответом, но я не могу понять, как использовать пространство имен WinNT WMI с ManagementObject. Когда я пытаюсь выполнить следующий код, возникает исключение «Неверный параметр».

public static void ResetPassword(string computerName, string username, string newPassword){ 
            ManagementObject managementObject = new ManagementObject("WinNT://" + computerName + "/" + username); // Throws Exception
            object[] newpasswordObj = {newPassword};
            managementObject.InvokeMethod("SetPassword", newpasswordObj);
}

Есть ли лучший способ сделать это? (Я использую .NET 3.5)

Редактировать: Спасибо, Элай, за то, что указал мне правильное направление. Вот код, который я использовал в итоге:

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);
}

Ответы [ 2 ]

2 голосов
/ 25 октября 2008

Попробуйте класс DirectoryEntry вместо ManagementObject класса.

1 голос
/ 27 октября 2008

Как заметил Эли, вы можете использовать код System.DirectoryServices, чтобы выполнить это для MSDN :

String myADSPath = "LDAP://onecity/CN=Users,
     DC=onecity,DC=corp,DC=fabrikam,DC=com";

// Create an Instance of DirectoryEntry.
DirectoryEntry myDirectoryEntry = new DirectoryEntry(myADSPath);
myDirectoryEntry.Username = UserName;
myDirectoryEntry.Password = SecurelyStoredPassword;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...