首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从驱动字母中获取驱动模型

从驱动字母中获取驱动模型
EN

Stack Overflow用户
提问于 2014-12-23 22:29:49
回答 4查看 4.2K关注 0票数 9

我想从一个驱动器上得到模型的名字。例如,Crucial_CT256MX100SSD1是我的驱动器C:\的模型

可以通过简单的WMI查询检索模型,

代码语言:javascript
运行
复制
var hdd = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE Index = '0'")
    .Get()
    .Cast<ManagementObject>()
    .First();
MessageBox.Show(hdd["Model"].ToString());

但是,我不能使用驱动器字母过滤查询。

不幸的是,Win32_LogicalDisk没有驱动器的模型。

我没有更多的想法。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-12-23 23:42:31

我给你写了一个函数,它能满足你的需要:

代码语言:javascript
运行
复制
class Program
{
    static void Main(string[] args)
    {
        const string drive = "C:";

        Console.WriteLine("Drive {0}'s Model Number is {1}", drive, GetModelFromDrive(drive));
    }

    public static string GetModelFromDrive(string driveLetter)
    {
        // Must be 2 characters long.
        // Function expects "C:" or "D:" etc...
        if (driveLetter.Length != 2)
            return "";

        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["Model"];
                        }
                    }
                }
            }
        }
        catch
        {
            return "<unknown>";
        }

        // Not Found
        return "<unknown>";
    }
}

只需传入一个字符串,如C:D:。一定是驱动器号和冒号。而且,我只为硬盘做了这个工作。它不会在光盘驱动器上工作.不过,如果您需要该功能,则可以扩展它。

票数 16
EN

Stack Overflow用户

发布于 2014-12-23 22:40:53

我相信分区驱动映射可以从Win32_LogicalDiskToPartitionWin32_DiskDriveToDiskPartition类中读取。

票数 1
EN

Stack Overflow用户

发布于 2014-12-23 22:50:06

Win32_DiskDriveToDiskPartition,Win32_LogicalDiskToPartition

蛮力:

  1. 取下所有磁盘 从Win32_DiskDrive中选择*
  2. 对于每个磁盘获取分区 {Win32_DiskDrive.DeviceID=disk.DeviceID }的关联者,其中AssocClass = Win32_DiskDriveToDiskPartition
  3. 对于每个分区,获得卷号 {Win32_DiskPartition.DeviceID=partition.DeviceID}的合伙人,其中AssocClass = Win32_LogicalDiskToPartition
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27628965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档