列出具有完整详细信息的本地和网络驱动器

时间:2014-05-20 14:10:33

标签: c# file-io .net fileinfo

我一直在搜索互联网,试图找到答案,但似乎找不到任何东西。

我使用TreeView作为练习使自己成为一个新的文件夹浏览器UserControl,以尝试更多地了解C#,并添加到我正在开发的文件重命名程序中。

我发现TreeView对于我的触摸屏笔记本电脑来说有点小,所以我自己用它来用大图标和+符号重新创建它。

现在,首先,我要获取要添加到TreeView中的驱动器列表(本地和网络),但我似乎无法获得所需的所有信息

在我的电脑中(我使用的是Windows XP,但我会在其他版本上测试此计算机),有11个对象显示

因工作而被编辑

使用System.IO我可以获得一些显示但不是全部的内容。

我有的选择是: AvailableFreeSpace DriveFormat 的DriveType 准备好了 名称 根目录 TOTALFREESPACE 总计TOTALSIZE 的VolumeLabel

以P:\为例,我得到以下内容:

AvailableFreeSpace  = 30102499328
DriveFormat         = NTFS
DriveType           = Network               
IsReady             = True
Name                = P:\
RootDirectory       = P:\
TotalFreeSpace      = 30102499328
TotalSize           = 4397611224320
VolumeLabel         = FileSystem6 (3Par)

因此,没有一个选项可以为我提供“我的电脑”中显示的 EDITED 详细信息。

有人能告诉我如何获取这些信息吗?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您应该能够使用WMI获得所需内容。添加对System.Management.dll的引用并尝试以下操作:

System.Management.ManagementClass mc = new System.Management.ManagementClass("Win32_LogicalDisk");

System.Management.ManagementObjectCollection moc = mc.GetInstances();
if (moc.Count != 0)
{
    foreach (System.Management.ManagementObject mo in mc.GetInstances())
    {
        string providerName = string.Empty;

        if (mo["ProviderName"] != null)
        {
            providerName = mo["ProviderName"].ToString();
        }

        Console.WriteLine("\nName: {0}\nVolume Name: {1}\nProvider Name: {2}",
                          mo["Name"].ToString(),
                          mo["VolumeName"].ToString(),
                          providerName);
    }
}

有关Win32_LogicalDisk类的其他属性,请参阅http://msdn.microsoft.com/en-us/library/aa394173(v=vs.85).aspx