C# 在C中列出所有磁盘分区

C# 在C中列出所有磁盘分区,c#,wmi,C#,Wmi,我一直在写一个代码来列出一个磁盘的所有分区,我发现了一个问题。WMI的Win32_DiskDrive属性分区向我显示一个测试磁盘有5个分区,但我只能列出其中的四个分区。最后两个分区显示为它们只有一个。最后两个分区是主分区,但一个是交换分区,另一个是Linux分区。我相信您需要的是 对于使用GetLogicalDrives获得的每个字符串,可以创建一个对象,该对象将提供有关逻辑驱动器的各种信息 可能是上述两个步骤的快捷方式。不过,我不完全确定,文档也不是很清楚。我认为这应该可以做到: //

我一直在写一个代码来列出一个磁盘的所有分区,我发现了一个问题。WMI的Win32_DiskDrive属性分区向我显示一个测试磁盘有5个分区,但我只能列出其中的四个分区。最后两个分区显示为它们只有一个。最后两个分区是主分区,但一个是交换分区,另一个是Linux分区。

我相信您需要的是

对于使用GetLogicalDrives获得的每个字符串,可以创建一个对象,该对象将提供有关逻辑驱动器的各种信息


可能是上述两个步骤的快捷方式。不过,我不完全确定,文档也不是很清楚。

我认为这应该可以做到:

    /// <summary>
    /// Loads all Drives of the Computer and returns a List.
    /// </summary>
    private List<DriveInfo> LoadDrives()
    {
        var drives = new List<DriveInfo>();
        foreach (DriveInfo drive in DriveInfo.GetDrives())
        {
            if (drive.IsReady)
            {
                drives.Add(drive);
            }
        }
        return drives;
    }

我们可以看到您尝试过的代码吗?@KenWhite,我只会同意OP真正想要使用WMI方法,而不是Tim的答案。我已经尝试过这个代码codevar searcher=new ManagementObjectSearcherSELECT*FROM Win32_DiskPartition;foreach var queryObj在searcher.Get{Console.WriteLine-----------------;Console.WriteLineWin32_DiskPartition实例;Console.WriteLineName:{0},stringqueryObj[Name];Console.WriteLineIndex:{0},uintqueryObj[Index];Console.WriteLineDeviceID:{0},stringqueryObj[DeviceID];}`@gunr2171:问题是关于在C中列出所有磁盘分区,这也是我链接的问题所问的。他们都说没有WMI,这个问题确实提到了使用WMI。这个问题也没有提到使用蒂姆的答案-如果你真的想,你可以更换你的驱动器。添加一个收益回报和一个IEnumerable。正如我的建议。我试过了,但这段代码只返回了3个驱动器,windows磁盘管理显示了5个…是的,这是真的,也许更优雅:我认为原因可能是有条件的!您可以调试该函数并查看为什么只返回三个驱动器!DriveInfo.GetDrive仅返回Windows在我的电脑窗口中显示的相同驱动器我将尝试使用string[]System.IO.Directory.GetLogicalDrive并告诉我的经验此代码返回相同的驱动器,仅3个,Windows在我的电脑窗口中显示的相同驱动器。。。