我目前正在开发一个程序,可以让我检测计算机中所有硬盘驱动器的序列号并将它们显示为条形码。
我让它在我当前的机器 (Windows 10) 上运行,它获得了正确的序列号(与硬盘标签上的相同)但是当我尝试在另一台机器 (Windows 7) 上使用它时,它只是输出一个长一串数字。
程序能够检测并输出我的 usb 上的序列号。
var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject wmi_HD in searcher.Get())
{
HardDrive hd = new HardDrive();
hd.Model = wmi_HD["Model"].ToString();
hd.SerialNum = Convert.ToString(wmi_HD.GetPropertyValue("SerialNumber"));
hdCollection.Add(hd);
}
这是我当前使用的代码,但它输出的序列号是:5635454d4338414e202020202020202020202020
我试过
Win32_LogicalDrive
和 Win32_Volume
但它们输出相同的字符串。
我也试过这个代码片段:
ManagementClass driveClass = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection drives = driveClass.GetInstances();
foreach (ManagementObject drive in drives)
{
HardDrive hd = new HardDrive();
hd.Model = drive["Name"].ToString();
//hd.SerialNum = drive.GetPropertyValue("SerialNumber").ToString();
hd.SerialNum = drive["SerialNumber"].ToString();
}
但这在 Windows 7 机器上也不起作用。
我该如何解决我的问题?
我有同样的问题。尝试以管理员身份运行您的程序,这在我的情况下适用于 Windows 7.