【问题标题】:Obtaining HDD Serial Number via Drive Letter using WMI query in C#在 C# 中使用 WMI 查询通过 Drive Letter 获取 HDD 序列号
【发布时间】:2015-09-16 18:15:52
【问题描述】:

我有以下代码可以很好地通过Win32_DiskDrive 中的模型字符串值获取硬盘序列号。但我需要通过分配的驱动器号获取序列号。这可能吗?如果有怎么办?

public string GetDriveSerial(string model)
{
    string serial = string.Empty;
    string query = "SELECT * FROM Win32_DiskDrive WHERE Model = '" + model + "'";
    try
    {
        using (var results = new ManagementObjectSearcher("root\\CIMV2", query))
        {
            foreach (ManagementObject result in results.Get())
            {
                serial = result["SerialNumber"].ToString();
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    return serial;
}

【问题讨论】:

    标签: c# wmi hard-drive


    【解决方案1】:

    你可以试试这个:

    public static string GetSerialFromDrive(string driveLetter)
    {
        try
        {
            using (var partitions = new ManagementObjectSearcher("ASSOCIATORS OF {Win32_LogicalDisk.DeviceID='" + driveLetter +
                                                "'} WHERE ResultClass=Win32_DiskPartition"))
            {
                foreach (var partition in partitions.Get())
                {
                    using (var drives = new ManagementObjectSearcher("ASSOCIATORS OF {Win32_DiskPartition.DeviceID='" +
                                                            partition["DeviceID"] +
                                                            "'} WHERE ResultClass=Win32_DiskDrive"))
                    {
                        foreach (var drive in drives.Get())
                        {
                            return (string)drive["SerialNumber"];
                        }
                    }
                }
            }
        }
        catch
        {
            return "<unknown>";
        }
    
        // Not Found
        return "<unknown>";
    }
    

    这需要这样的驱动器号:“C:”、“D:”... 原代码可以在here找到。

    【讨论】:

    • 那很好,但是我可能连接了两个相同型号的USB硬盘。这将使获得正确的序列号变得困难。通过Win32_DiskDrive 中的模型查询。我需要通过盘符查询串口。
    • @MickIlovski 我更新了我的答案。忘记了,驱动器已经保存了有关序列号的信息。所以你只需要一种方法。
    猜你喜欢
    • 1970-01-01
    • 2016-08-03
    • 2011-06-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 2011-02-16
    • 2010-10-21
    • 1970-01-01
    相关资源
    最近更新 更多