【问题标题】:C# Error - Namespaces ManagementClass, ManagementObject, and ManagementObjectCollection could not be foundC# 错误 - 找不到命名空间 ManagementClass、ManagementObject 和 ManagementObjectCollection
【发布时间】:2014-09-09 02:26:33
【问题描述】:

所以,在导入 C# 类后,我得到了完整的错误列表。我搜索了错误并获得了大量点击,但是他们都说只添加存在的 System.Management 命名空间,但它给出了这些错误。

类似的问题。没有解决方案对我有用: 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?)

类:

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
    }
}
}

错误列表:

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

【问题讨论】:

    标签: c# .net namespaces


    【解决方案1】:

    您还需要为您的项目添加程序集引用。您需要在项目中引用System.Management 程序集,否则using 语句将无法定位命名空间

    1. 右键单击您的项目
    2. 点击“添加引用...”
    3. 然后从“程序集”选项卡中选择“System.Management”

    【讨论】:

    • 哦,我认为把它放在班级的顶部就可以了。所有其他答案都说要这样做。谢谢,现在可以使用了!
    猜你喜欢
    • 2010-12-20
    • 1970-01-01
    • 2017-02-15
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    相关资源
    最近更新 更多