title: C# Error - Namespaces ManagementClass, ManagementObject, and ManagementObjectCollection could not be found
body: <p>So, I've got a full list of errors after importing a C# Class. I searched for the error and got a ton of hits however they all say to just add the System.Management namespace which is there and yet it gives these errors.</p>
  
  <p>Similar questions. No solution worked for me:
  <a href="https://stackoverflow.com/questions/3692384/missing-directive-or-assembly-reference-using-wmi-managementobjectsearcher">Missing directive or assembly reference using WMI ManagementObjectSearcher?</a> </p>
  
  <p><a href="https://stackoverflow.com/questions/1798152/managementclass-does-not-exist-in-the-namespace-system-management">&#39;ManagementClass&#39; does not exist in the namespace &#39;System.Management&#39;</a></p>
  
  <p><a href="https://stackoverflow.com/questions/2721351/the-type-or-namespace-cannot-be-found-are-you-missing-a-using-directive-or-an-a">The type or namespace cannot be found (are you missing a using directive or an assembly reference?)</a></p>
  
  <p>Class:</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Data;
  using System.Collections;
  using System.Drawing;
  using System.Linq;
  using System.Text;
  using System.Windows.Forms;
  using System.Diagnostics;
  using System.Text.RegularExpressions;
  using System.Net;
  using System.Xml;
  using System.IO.Compression;
  using System.Runtime.InteropServices;
  using System.Threading;
  using System.Management;
  using Microsoft.Win32;
  using System.Net.NetworkInformation;
  using System.Security.Cryptography;
  
  namespace PCID_Grabber
  {
  
  public class PCID
  {
      public static string GetCPUId()
      {
          #region CPUid
          string cpuInfo = String.Empty;
          string temp = String.Empty;
          ManagementClass mc = new ManagementClass("Win32_Processor");
          ManagementObjectCollection moc = mc.GetInstances();
          foreach (ManagementObject mo in moc)
          {
              if (cpuInfo == String.Empty)
              {
                  cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
              }
          }
          return cpuInfo;
          #endregion
      }
  
      public static string GetMotherBoardID()
      {
          #region Mboard
          ManagementObjectCollection mbCol = new ManagementClass("Win32_BaseBoard").GetInstances();
          ManagementObjectCollection.ManagementObjectEnumerator mbEnum = mbCol.GetEnumerator();
          mbEnum.MoveNext();
          return ((ManagementObject)(mbEnum.Current)).Properties["SerialNumber"].Value.ToString();
          #endregion
      }
  
      public static string GetMacAddress()
      {
          #region MacAddress
          string macs = "";
          NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
          foreach (NetworkInterface ni in interfaces)
          {
              PhysicalAddress pa = ni.GetPhysicalAddress();
              macs += pa.ToString();
          }
          return macs;
          #endregion
      }
      public static string GetVolumeSerial()
      {
          #region HD serial
          string strDriveLetter = "";
          ManagementClass mc = new ManagementClass("Win32_PhysicalMedia");
          ManagementObjectCollection moc = mc.GetInstances();
          foreach (ManagementObject mo in moc)
          {
              try
              {
                  if ((UInt16)mo["MediaType"] == 29)
                  {
                      String serial = mo["SerialNumber"].ToString().Trim();
                      if (!String.IsNullOrEmpty(serial))
                      {
                          strDriveLetter = (string)mo["SerialNumber"];
                          return strDriveLetter;
                      }
                  }
              }
              catch { }
          }
          return strDriveLetter;
          #endregion
      }
      public static string GetGenericID()
      {
          #region UID
          string ID = GetCPUId()  + GetMotherBoardID()  + GetMacAddress()  + GetVolumeSerial();
          HMACSHA1 hmac = new HMACSHA1();
          hmac.Key = Encoding.ASCII.GetBytes(GetMotherBoardID());
          hmac.ComputeHash(Encoding.ASCII.GetBytes(ID));
          StringBuilder sb = new StringBuilder();
          for (int i = 0; i &lt; hmac.Hash.Length; i++)
          {
              sb.Append(hmac.Hash[i].ToString("X2"));
          }
          return sb.ToString();
          #endregion
      }
  }
  }
  </code></pre>
  
  <p>List of Errors:</p>
  
  <pre><code>Error   1   The type or namespace name 'ManagementClass' could not be found (are you missing a using directive or an assembly reference?)   C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs  31  13  PCID Grabber
  Error   2   The type or namespace name 'ManagementClass' could not be found (are you missing a using directive or an assembly reference?)   C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs  31  38  PCID Grabber
  Error   5   The type or namespace name 'ManagementClass' could not be found (are you missing a using directive or an assembly reference?)   C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs  46  52  PCID Grabber
  Error   8   The type or namespace name 'ManagementClass' could not be found (are you missing a using directive or an assembly reference?)   C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs  69  13  PCID Grabber
  Error   9   The type or namespace name 'ManagementClass' could not be found (are you missing a using directive or an assembly reference?)   C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs  69  38  PCID Grabber
  Error   7   The type or namespace name 'ManagementObject' could not be found (are you missing a using directive or an assembly reference?)  C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs  49  22  PCID Grabber
  Error   3   The type or namespace name 'ManagementObjectCollection' could not be found (are you missing a using directive or an assembly reference?)    C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs  32  13  PCID Grabber
  Error   4   The type or namespace name 'ManagementObjectCollection' could not be found (are you missing a using directive or an assembly reference?)    C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs  46  13  PCID Grabber
  Error   6   The type or namespace name 'ManagementObjectCollection' could not be found (are you missing a using directive or an assembly reference?)    C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs  47  13  PCID Grabber
  Error   10  The type or namespace name 'ManagementObjectCollection' could not be found (are you missing a using directive or an assembly reference?)    C:\Users\Keanu\workspace\PCID Grabber\PCID Grabber\pcid.cs  70  13  PCID Grabber
  </code></pre>