I am looking for a way to change the password of a local user account (local Administrator) on a Windows (XP in this case) machine. I have read the CodeProject article about one way to do this, but this just doesn't seem 'clean'.
I can see that this is possible to do with WMI, so that might be the answer, but I can't figure out how to use the WinNT WMI namespace with ManagementObject. When I try the following code it throws an "Invalid Parameter" exception.
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);
}
Is there a better way to do this? (I'm using .NET 3.5)
Edit: Thanks Ely for pointing me in the right direction. Here is the code I ended up using:
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);
}
Open Start on Windows 10. Search for Command Prompt, right-click the top result, and select the Run as administrator option. In the command, make sure to change USERNAME with the account name you want to update. Type a new password and press Enter.
To open an elevated Command Prompt without logging in, you can replace the Ease of Access application (Utilman.exe) with cmd.exe, and this can be done from a boot media. Afterwards you can click the Ease of Access button to access Command Prompt, and reset local administrator password with cmd.
Try the DirectoryEntry
class instead of ManagementObject
class.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With