0

我有一个 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

为什么这样?请帮忙。

4

1 回答 1

0

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

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

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

对于mbid.

什么杜甫?:|

PS@LB建议这个。给他更多的权力。

于 2014-04-14T06:19:20.033 回答