在Windows XP上获取物理磁盘序列号不起作用

我试图获得物理磁盘序列号使用C#和WMI

var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia"); foreach (ManagementObject mo in searcher.Get()) { Console.WriteLine("Serial: {0}", mo["SerialNumber"]); } 

此代码显示所有的硬盘驱动器和闪存可移动棒的序列号,但无法在Windows XP上获得闪存可移动磁盘,并为可移动磁盘给我空,但正确获得硬盘序列号。 任何想法有什么不对?

我的想法是,Windows XP需要更新,任何人都知道什么是更新需要? 我需要特定的更新,以包括它与我的软件。

为什么会发生这种情况?

Solutions Collecting From Web of "在Windows XP上获取物理磁盘序列号不起作用"

据我所知,即使代码正确完成,也不能保证存储设备会报告序列号。 在过去,我在使用WMI的时候,在一些许可代码上工作,并且在各种环境中遇到类似的问题。 根据我的经验,使用低级别的API调用会更加可靠(但是它的编码/测试多得多),但即使如此,您也不能保证获得序列号。

一些可能遇到问题的环境(不是完整的列表):

  • Windows XP
  • 虚拟机
  • SATA驱动器
  • 各种其他设备,表现为自己的硬盘,但实际上不是
  • 等等

你可以看看Code Project上的这篇文章 ,看看它是否对你更好。

如果您正在尝试使用某种授权解决方案,您可能需要考虑获取更多的硬件信息,以便在缺少一条信息的情况下,您还有其他需要解决的问题。 这也是值得阅读有关欺骗硬盘序列号 。