如何列出没有映射驱动器的逻辑驱动器

本文关键字:驱动器 逻辑驱动器 映射 何列出 | 更新日期: 2023-09-27 17:56:56

我想用逻辑驱动器列表填充组合框,但我想排除任何映射的驱动器。下面的代码为我提供了所有逻辑驱动器的列表,无需任何过滤。

comboBox.Items.AddRange(Environment.GetLogicalDrives());

是否有一种方法可以帮助您确定物理驱动器和映射驱动器?

如何列出没有映射驱动器的逻辑驱动器

您可以使用

DriveInfo 类

    DriveInfo[] allDrives = DriveInfo.GetDrives();
    foreach (DriveInfo d in allDrives)
    {
        Console.WriteLine("Drive {0}", d.Name);
        Console.WriteLine("  File type: {0}", d.DriveType);
        if(d.DriveType != DriveType.Network)
        {
            comboBox.Items.Add(d.Name);
        }
    }

Network属性DriveType时排除驱动器

使用 DriveInfo.GetDrives 获取驱动器列表。然后,可以按列表的 DriveType 属性筛选列表。

您可以在DriveInfo类中使用DriveType属性

 DriveInfo[] dis = DriveInfo.GetDrives();
 foreach ( DriveInfo di in dis )
 {
     if ( di.DriveType == DriveType.Network )
     {
        //network drive
     }
  }
首先想到

的是映射的驱动器将以''开头的字符串

这里详细介绍了另一种更广泛但更可靠的方法:如何以编程方式发现系统上的映射网络驱动器及其服务器名称?


或者尝试调用DriveInfo.GetDrives(),这将为您提供具有更多元数据的对象,这些元数据将帮助您在之后进行过滤。下面是一个示例:

http://www.daniweb.com/software-development/csharp/threads/159290/getting-mapped-drives-list

尝试使用 System.IO.DriveInfo.GetDrives

comboBox.Items.AddRange(
       System.IO.DriveInfo.GetDrives()
                          .Where(di=>di.DriveType != DriveType.Network)
                          .Select(di=>di.Name));

我找到的关于这个主题的最完整的信息(在互联网上长时间搜索后)可以在代码项目上找到: VB.NET 简单获取物理磁盘及其上的分区的列表

(这是一个 VB 项目。

这是对我有用的:

DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
    if (d.IsReady && (d.DriveType == DriveType.Fixed || d.DriveType == DriveType.Removable))
    {
        cboSrcDrive.Items.Add(d.Name);
        cboTgtDrive.Items.Add(d.Name);
    }
}