Изменить пароль локального администратора в C #

StackOverflow https://stackoverflow.com/questions/234845

  •  04-07-2019
  •  | 
  •  

Вопрос

Я ищу способ изменить пароль учетной записи локального пользователя (локального администратора) на компьютере с 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);
}
Это было полезно?

Решение

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

Другие советы

Как отметил Эли, вы можете использовать код 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;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top