【问题标题】:Error while fetching Hardware Info in Visual Studio 2010在 Visual Studio 2010 中获取硬件信息时出错
【发布时间】:2014-02-24 07:41:22
【问题描述】:

我有一个 C# 项目,我试图通过注册硬件 ID 的组合来部署保护机制。

我正在使用 ManagementObjectSearcher 类。以下是一些命令:

ManagementObjectSearcher cpuget = new ManagementObjectSearcher("Select * From Win32_processor");
ManagementObjectSearcher mainboardget = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
ManagementObjectSearcher biosget = new ManagementObjectSearcher("Select * From Win32_BIOS");

用于获取我拥有的 ID:

foreach (ManagementObject mo in cpuList)
    {
        cpuid = mo["ProcessorID"].ToString();
    }
foreach (ManagementObject mo in mainboardlist)
    {
        mbid = mo["SerialNumber"].ToString();
    }

这一直运行良好。但是,*在某些机器上(我在 10 台 PC 上进行了测试,其中两台是默认的)*出现了错误消息。

Reference not set to Instance of an Object

为什么会这样?请帮忙。

【问题讨论】:

  • 这 2 台电脑有什么操作系统?
  • 其中一些为 mo["XXXX"] 返回 null。检查.ToString()之前是否为空
  • @kostasch。所有电脑都有 Win7 x86
  • @L.B 即使我这么认为:)。所以我做了一些虚拟构建,在那里我检查了每个硬件字符串的输出。同样的错误。
  • 哪一行给出了异常?

标签: c# winforms visual-studio-2010 hardware-id


【解决方案1】:

最困难的问题有最愚蠢的答案。期间。

我所要做的就是检查管理对象类中的空组件。

foreach (ManagementObject mo in cpuget.Get())
 {
    if (mo["ProcessorID"] != null)
    cpuid = mo.GetPropertyValue("ProcessorID").ToString();
 }

mbid 也是如此。

什么鬼? :|

P.S.:@L.B 建议这样做。给他更多的权力。

【讨论】:

    猜你喜欢
    • 2011-05-25
    • 2010-10-28
    • 2013-04-14
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 2015-10-02
    相关资源
    最近更新 更多