【问题标题】:Getting Physical Disks serial number doesn't work on windows XP获取物理磁盘序列号在 Windows XP 上不起作用
【发布时间】:2013-10-12 11:01:17
【问题描述】:

我正在尝试使用 C# 和 WMI 获取物理磁盘序列号

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

此代码显示 HDD 和闪存可移动存储棒的所有序列号, 但它无法在 Windows XP 上获取闪存可移动磁盘,并为可移动磁盘提供 null,但正确获取 HDD 序列号。 有什么想法吗?

我的想法是 Windows XP 需要更新,有人知道需要更新什么吗? 我需要特定的更新以将其包含在我的软件中。

发生这种情况的任何其他原因?

【问题讨论】:

    标签: c# windows windows-7 windows-xp wmi


    【解决方案1】:

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

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

    • Windows XP
    • 虚拟机
    • SATA 驱动器
    • 其他各种设备都显示为 HDD,但实际上不是

    你可以看看这个article on Code Project,看看它是否更适合你。

    如果您尝试为某种许可解决方案执行此操作,您可能需要考虑获取更多硬件信息,以便在缺少一条信息时您仍然可以使用其他信息。 spoofing HDD serial numbers 也值得一读。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-21
      • 2018-05-15
      • 1970-01-01
      • 2014-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多