【问题标题】:How to get disk ID using C# (not "SerialNumber")?如何使用 C#(不是“SerialNumber”)获取磁盘 ID?
【发布时间】:2015-07-24 09:25:10
【问题描述】:

我想使用 C# 检索我的硬盘驱动器的磁盘 ID

我不想要大多数文章所说的“序列号”,因为我的盒子上没有它。

要检查这个ID,你可以在windows上运行“cmd”:

  diskpart
  list disk
  select disk 0
  detail disk

输出如下:

  HGST HTS725050A7E630
  Disk ID: 1033D54D
  ...

在我的虚拟盒子上输出是

VBOX HARDDISK
Disk ID: 22452244

磁盘 ID 似乎是一个 32 位整数。

有没有使用 C# 获得相同的东西(使用 API 而不是解析 cmd 输出)?

【问题讨论】:

    标签: c# disk


    【解决方案1】:

    此值存储为“签名”。你得到这个序列号的地方是同一个地方。

    ManagementObjectSearcher win32DiskDrives = new ManagementObjectSearcher("select * from Win32_DiskDrive");
    foreach (ManagementObject win32DiskDrive in win32DiskDrives.Get())
    {
        Console.WriteLine("{0:X}", win32DiskDrive.Properties["Signature"].Value);
    }
    

    【讨论】:

    • 当我运行您为 diskpart 提供的步骤时,我得到磁盘 ID E3D125A4 - 当我运行上面的代码时,我得到:E3D125A4。在 15 个不同的磁盘上尝试过,每次都得到匹配的值。
    • 谢谢,是的。我使用了一个工具来检查它,但我没有注意到它是以十进制格式显示的。
    【解决方案2】:

    您可以使用 WMI 和 Win32_DiskDrive 类。有 DeviceIDSerialNumber 属性,您可能需要检查它是否包含您要查找的值。

    【讨论】:

    • DeviceID 在所有计算机上都相同,例如“\\.\PHISICALDRIVE0”。
    • @LeonZeng 你能枚举类的所有属性,看看它们是否包含你感兴趣的值吗?
    猜你喜欢
    • 2020-03-01
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    • 2018-01-22
    • 2014-12-21
    • 2015-01-19
    相关资源
    最近更新 更多