title: rename computer programmatically c# .net
body: <p>I need to rename my computer via .net application.
  I have tried this code:</p>
  
  <pre><code>public static bool SetMachineName(string newName)
  {
      MessageBox.Show(String.Format("Setting Machine Name to '{0}'...", newName));
  
      // Invoke WMI to populate the machine name
      using (ManagementObject wmiObject = new ManagementObject(new ManagementPath(String.Format("Win32_ComputerSystem.Name='{0}'",System.Environment.MachineName))))
      {
          ManagementBaseObject inputArgs = wmiObject.GetMethodParameters("Rename");
          inputArgs["Name"] = newName;
  
          // Set the name
          ManagementBaseObject outParams = wmiObject.InvokeMethod("Rename",inputArgs,null);
  
          uint ret = (uint)(outParams.Properties["ReturnValue"].Value);
          if (ret == 0)
          {
              //worked
              return true;
          }
          else
          {
              //didn't work
              return false;
          }
      }
  }
  </code></pre>
  
  <p>but it didn't work.</p>
  
  <p>and i have tried this one:</p>
  
  <pre><code>using System.Runtime.InteropServices;
  
  [DllImport("kernel32.dll")]
  static extern bool SetComputerName(string lpComputerName);
  
  public static bool SetMachineName(string newName)
  {
  
      bool done = SetComputerName(newName);
      if (done)
      {
          { MessageBox.Show("Done"); return true; }
      }
      else
      { MessageBox.Show("Failed"); return false; }
  }
  </code></pre>
  
  <p>but it also didn't work.</p>