我正在使用以下代码来获取我的驱动器序列号。它在 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 启动操作系统,这段代码会起作用吗?我怎么知道操作系统是从笔式驱动器或磁盘或任何其他资源运行的?
当我转到设备管理器时,我看到:
我加入这个作为一个答案,因为它可以节省大量的时间,同时调试场景,如System.NullReferenceException在WMI。
并连接到要获取信息的机器。触发对Win32_DiskDrive的查询并检查您可以获取的属性的输出。