managementobjectsearcher c# wmi

managementobjectsearcher - Cambiar la contraseña del administrador local en C#



wmi (2)

Como observó Ely, puede usar el código System.DirectoryServices para lograr esto por 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;

Estoy buscando una forma de cambiar la contraseña de una cuenta de usuario local (Administrador local) en una máquina con Windows (XP en este caso). He leído el artículo de CodeProject sobre una forma de hacerlo, pero esto simplemente no parece ''limpio''.

Puedo ver que esto es posible con WMI , por lo que esa podría ser la respuesta, pero no puedo entender cómo usar el espacio de nombres Winni WMI con ManagementObject. Cuando intento el siguiente código arroja una excepción de "Parámetro Inválido".

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

¿Hay una mejor manera de hacer esto? (Estoy usando .NET 3.5)

Editar: Gracias Ely por señalarme en la dirección correcta. Aquí está el código que terminé usando:

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


Pruebe la clase DirectoryEntry lugar de la clase ManagementObject .