无法使用 Win32_DiskDrive 获取系统硬盘序列号
Unable to get system hard drive SerialNumber using Win32_DiskDrive
我正在使用以下代码获取我的驱动器序列号。它在 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();
}
我得到
System.NullReferenceException : Object reference not set to an instance of an object.
有谁知道为什么?在这种情况下,我需要做什么才能获得序列号?
还有一个问题:如果我从我的 pendrive 启动 OS,这段代码可以工作吗?我怎么知道 OS 是来自 pendrive 或磁盘或任何其他资源的 运行?
当我进入设备管理器时,我看到了这个:
我将其添加为答案,因为它可以在调试 WMI.
中的 System.NullReferenceException
等场景时节省大量时间
- Windows+R(运行命令)
- 键入 wbemtest
并连接到您要为其获取信息的机器。触发 Win32_DiskDrive 的查询并检查输出中是否有您可以获取的属性。
这是我在 Windows 10 v1809 上使用的:
using System;
using System.Management;
namespace GetSerialNo
{
class Program
{
static void Main(string[] args)
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject info in searcher.Get())
{
Console.WriteLine("DeviceID: " + info["DeviceID"].ToString());
Console.WriteLine("Model: " + "Model: " + info["Model"].ToString());
Console.WriteLine("Interface: " + "Interface: " + info["InterfaceType"].ToString());
Console.WriteLine("Serial#: " + "Serial#: " + info["SerialNumber"].ToString());
}
Console.ReadLine();
}
}
}
详情请见http://csharphelper.com/blog/2017/10/get-hard-drive-serial-number-c/
对于关联的 link Get Hard disk serial Number given by @ADreNaLiNe-DJ,我找不到 HardDrive hd = new HardDrive();
所需的程序集参考
我正在使用以下代码获取我的驱动器序列号。它在 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();
}
我得到
System.NullReferenceException : Object reference not set to an instance of an object.
有谁知道为什么?在这种情况下,我需要做什么才能获得序列号?
还有一个问题:如果我从我的 pendrive 启动 OS,这段代码可以工作吗?我怎么知道 OS 是来自 pendrive 或磁盘或任何其他资源的 运行?
当我进入设备管理器时,我看到了这个:
我将其添加为答案,因为它可以在调试 WMI.
中的System.NullReferenceException
等场景时节省大量时间
- Windows+R(运行命令)
- 键入 wbemtest
并连接到您要为其获取信息的机器。触发 Win32_DiskDrive 的查询并检查输出中是否有您可以获取的属性。
这是我在 Windows 10 v1809 上使用的:
using System;
using System.Management;
namespace GetSerialNo
{
class Program
{
static void Main(string[] args)
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject info in searcher.Get())
{
Console.WriteLine("DeviceID: " + info["DeviceID"].ToString());
Console.WriteLine("Model: " + "Model: " + info["Model"].ToString());
Console.WriteLine("Interface: " + "Interface: " + info["InterfaceType"].ToString());
Console.WriteLine("Serial#: " + "Serial#: " + info["SerialNumber"].ToString());
}
Console.ReadLine();
}
}
}
详情请见http://csharphelper.com/blog/2017/10/get-hard-drive-serial-number-c/
对于关联的 link Get Hard disk serial Number given by @ADreNaLiNe-DJ,我找不到 HardDrive hd = new HardDrive();