title: Unknown error (0x80005000) when trying to set local machine account password
body: <p>I am writing a csharp windows form application which attempts to check for the existence of a <em>local</em> account and if found set the password on it. A couple of key points:</p>
  
  <ul>
  <li><p>I'm doing this for local accounts - NOT Active Directory accounts. The machines are not members of a windows AD domain.</p></li>
  <li><p>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</p></li>
  <li><p>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.</p></li>
  <li><p>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.</p></li>
  </ul>
  
  <p>Here's my code:</p>
  
  <pre><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);
          }
  
      }
  </code></pre>
  
  <p>Here's the error I am receiving:</p>
  
  <hr>
  
  <h2>Unknown error (0x80005000)</h2>
  
  <h2>OK</h2>
  
  <p>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?</p>
  
  <p>Thanks
  Brad</p>