Unknown error (0x80005000) when trying to set local machine account password


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.");

            MessageBox.Show("User Account does not exist");
            CreateUserAccount(username, password);

    public void SetUserPassword(string newPassword)
            DirectoryEntry hostMachineDirectory = new DirectoryEntry("WinNT://" + Environment.MachineName + ", specialaccount");
            hostMachineDirectory.Invoke("SetPassword", newPassword);
        catch (Exception ex)


Here's the error I am receiving:

Unknown error (0x80005000)


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

asked on Stack Overflow Mar 9, 2012 by Brad • edited Mar 9, 2012 by Akrem

1 Answer


I've run in to similarly obfuscated errors when using ActiveDirectory libraries. What I've found to be immensely helpful is using the Microsoft Network Monitor to track messages being sent to/from LDAP. Usually the error message being sent back has much more detail.

EDIT: I would recommend the following to help debug your communication issues:

  • Place a breakpoint and run your app to where you CommitChanges
  • Fire-up the Microsoft Network Monitor (start the capture)
  • Execute the CommitChanges line
  • Stop the current capture in the Microsoft Network Monitor

At this point you can scroll through the messages to see where your calls occurred.

EDIT2: Here's a reference to the DirectoryEntry.Path. It shows the WinNT formatting for connecting to a user as:

WinNT:// < domain name> / < computer name > / < user name >

answered on Stack Overflow Mar 9, 2012 by CAbbott • edited Mar 9, 2012 by CAbbott

User contributions licensed under CC BY-SA 3.0