如何列出没有映射驱动器的逻辑驱动器
本文关键字:驱动器 逻辑驱动器 映射 何列出 | 更新日期: 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);
}
}