I am writing a csharp windows form application which attempts to check for the existence of a local account and if found set the password on it. A couple of key points:
I'm doing this for local accounts - NOT Active Directory accounts. The machines are not members of a windows AD domain.
I HAVE to use setpassword not changepassword as change password requires you to know the previous password which in some cases I do not. Setpassword is supposed to allow you to select a new password without having to know the old one
The application will be run by approximately 50 users using a variety of OS's from Windows XP all the way up to Windows Server 2008 R2. Because I can't predict what operating system and version of .net will be available I have set my target framework as .net 2.0.
I am expecting my user to be running as an administrator presently so I don't think permissions are an issue. I can create uses just fine I just can't set password on an existing account.
Here's my code:
public void VerifiyAccount()
{
String username = "specialaccount";
String password = "SuperSecretPassw0rd!";
if (CheckIfAccountExists(username))
{
MessageBox.Show("User Account all ready exists.");
SetUserPassword(password);
}
else
{
MessageBox.Show("User Account does not exist");
CreateUserAccount(username, password);
}
}
public void SetUserPassword(string newPassword)
{
try
{
DirectoryEntry hostMachineDirectory = new DirectoryEntry("WinNT://" + Environment.MachineName + ", specialaccount");
hostMachineDirectory.Invoke("SetPassword", newPassword);
hostMachineDirectory.CommitChanges();
hostMachineDirectory.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Here's the error I am receiving:
Unknown error (0x80005000)
OK
I can't figure out why I'm getting the above error and despite googling and searching stack overflow I can't find any explanation. Most examples I can find revolve around connecting to Active Directory - not local accounts. Or are using newer .net 4.0 features. I have to believe that if I can create an account I should be able to set the password on an account. Any ideas or suggestions on what I might be doing wrong?
Thanks Brad