【问题标题】:Tell if a Drive is a partition or a separate HDD判断驱动器是分区还是单独的 HDD
【发布时间】:2012-02-02 14:31:43
【问题描述】:

我正在编写自己的文件搜索(为什么是因为我想/可以 - 不是在寻找现有程序)。我可以使用DriveInfo.GetDrives() 方法在c# 中获取所有驱动器。理想情况下,我希望仅在单独磁盘的驱动器上并行运行搜索,并且对于同一驱动器上的分区按顺序运行它们。这样,当 GetDrives 返回所有分区或可移动媒体时,我不会导致驱动器不断寻找。我知道我可以分辨出它是 USB 驱动器还是硬盘驱动器的类型?我怎样才能通过 DriveInfo 或任何其他方法来实现这一点?

【问题讨论】:

    标签: c# windows file-io


    【解决方案1】:

    This related question 展示了如何使用 WMI 进行查找(在 System.Management 中找到):

    var searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_DiskPartition");
    
    foreach (var queryObj in searcher.Get())
    {
        Console.WriteLine("-----------------------------------");
        Console.WriteLine("Win32_DiskPartition instance");
        Console.WriteLine("Name:{0}", (string)queryObj["Name"]);
        Console.WriteLine("Index:{0}", (uint)queryObj["Index"]);
        Console.WriteLine("DiskIndex:{0}", (uint)queryObj["DiskIndex"]);
        Console.WriteLine("BootPartition:{0}", (bool)queryObj["BootPartition"]);
    }
    

    【讨论】:

    • 那么 DiskIndex 是物理驱动器吗?
    • documentation for Win32_DiskPartition 来看,DiskIndex 是“包含此分区的磁盘的索引号。”
    • @Brad - 提供的解决方案对您不起作用吗? (你拿走了答案……)
    • 如何将索引映射到卷,即 C:\ 是 DiskIndex 0 上的索引 0?
    • 这应该是一个不同问题的问题...我已经回答了这里提出的问题。
    猜你喜欢
    • 2015-12-24
    • 2016-09-16
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多