我正在尝试使用C#adn WMI获取物理磁盘序列号
var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
foreach (ManagementObject mo in searcher.Get())
{
Console.WriteLine("Serial: {0}", mo["SerialNumber"]);
}
此代码显示所有硬盘和闪存可移动棒的序列号, 但它无法在Windows XP上获得闪存可移动磁盘,并且为可移动磁盘提供null,但正确获取HDD序列号。 任何想法有什么不对?
我的想法是Windows XP需要更新,任何人都知道需要更新的是什么? 我需要特定的更新才能将其包含在我的软件中。
出现这种情况的任何其他原因?
答案 0 :(得分:1)
据我所知,即使代码正确完成,也无法保证存储设备会报告序列号。在过去,我使用过一些许可代码,在使用WMI时遇到了各种环境中的类似问题。根据我的经验,使用低级API调用会更加可靠(但它是很多更多的编码/测试),但即便如此,您也无法保证获得序列号。< / p>
某些可能遇到问题的环境(不是完整列表):
您可以查看此article on Code Project,看看它是否适合您。
如果您尝试为某种许可解决方案执行此操作,您可能需要考虑获取更多硬件信息,以便在缺少某条信息时仍然可以使用其他信息。它也值得一读spoofing HDD serial numbers。