无法使用 Win32_DiskDrive 获取系统硬盘序列号

Pra*_*tel 3 c# wmi winforms

我正在使用以下代码来获取我的驱动器序列号。它在 Windows 7、8、8.1 和 10 Professional 上运行良好,但在 Windows 10 Home 上出现错误。

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject wmi_HD in searcher.Get())
{
     if (wmi_HD["SerialNumber"] == null)
          hddId = null;
     else
          hddId = wmi_HD["SerialNumber"].ToString();
}
Run Code Online (Sandbox Code Playgroud)

我越来越

System.NullReferenceException:未将对象引用设置为对象的实例。

有谁知道为什么?在这种情况下,我需要做什么才能获得序列号?

还有一个问题:如果我从我的 pendrive 启动操作系统,这段代码会起作用吗?我怎么知道操作系统是从笔式驱动器或磁盘或任何其他资源运行的?

当我转到设备管理器时,我看到:

在此处输入图片说明

Ami*_*kya 5

我加入这个作为一个答案,因为它可以节省大量的时间,同时调试场景,如System.NullReferenceExceptionWMI

  1. Windows+R(运行命令)
  2. 类型WBEMTEST

并连接到要获取信息的机器。触发Win32_DiskDrive的查询并检查您可以获取的属性的输出。