C# Error - Namespaces ManagementClass, ManagementObject, and ManagementObjectCollection could not be found

非 Y 不嫁゛ 提交于 2021-01-27 04:59:20

问题


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.

Similar questions. No solution worked for me: Missing directive or assembly reference using WMI ManagementObjectSearcher?

'ManagementClass' does not exist in the namespace 'System.Management'

The type or namespace cannot be found (are you missing a using directive or an assembly reference?)

Class:

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 < hmac.Hash.Length; i++)
        {
            sb.Append(hmac.Hash[i].ToString("X2"));
        }
        return sb.ToString();
        #endregion
    }
}
}

List of Errors:

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

回答1:


You also need to add an assembly reference to your project. You need to reference the System.Management assembly in your project, otherwise the using statements will not be able to locate the namespaces

  1. Right-click your project
  2. Click "Add Reference..."
  3. And then select "System.Management" from the "Assemblies" tab

enter image description here



来源:https://stackoverflow.com/questions/24816703/c-sharp-error-namespaces-managementclass-managementobject-and-managementobje

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!