C# 在不使用软盘的情况下获取本地驱动器
我正在寻找一种方法来扫描硬盘,而不会招致系统试图读取软盘驱动器以查看其中是否有磁盘的“软盘税”C# 在不使用软盘的情况下获取本地驱动器,c#,hard-drive,C#,Hard Drive,我正在寻找一种方法来扫描硬盘,而不会招致系统试图读取软盘驱动器以查看其中是否有磁盘的“软盘税” 重要提示:我知道如何使用DriveInfo.GetDrives仅获取硬盘,但这需要在创建列表后进行筛选。如果可能的话,我想做的是在之前过滤。不是这样。。。在GetDrive调用期间,“驱动器信息”没有过滤或排除任何类型驱动器的功能 但也许还有别的办法。 (这是未经测试的,但可能是一个想法:)如果您只是在寻找特定驱动器的可用性,您可以使用特定驱动器的名称实例化DriveInfo类,看看是否有效?您可以尝
重要提示:我知道如何使用
DriveInfo.GetDrives
仅获取硬盘,但这需要在创建列表后进行筛选。如果可能的话,我想做的是在之前过滤。不是这样。。。在GetDrive调用期间,“驱动器信息”没有过滤或排除任何类型驱动器的功能
但也许还有别的办法。
(这是未经测试的,但可能是一个想法:)如果您只是在寻找特定驱动器的可用性,您可以使用特定驱动器的名称实例化DriveInfo类,看看是否有效?您可以尝试以下方法:
ConnectionOptions opts = new ConnectionOptions();
ManagementScope scope = new ManagementScope(@"\\.\root\cimv2", opts);
SelectQuery diskQuery = new SelectQuery("SELECT * FROM Win32_LogicalDisk WHERE (MediaType != 0 AND MediaType = 11 OR MediaType = 12)");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(diskQuery);
ManagementObjectCollection diskObjColl = searcher.Get();
介质类型11和12不是软盘。您可以在此处找到完整文档:CD驱动器和软盘驱动器尚未准备好 所以你可以试试这个:
foreach (var dr in DriveInfo.GetDrives())
{
if (dr.IsReady == true)
{
Console.WriteLine(string.Format("name : {0} type : {1}", dr, dr.DriveType));
}
}
是的,“谁用人字拖?”我也是这么说的:)我们可以用螺丝刀作为答案的一部分吗。。。你知道,要断开连接并放置一些有用的东西吗?@MarcGravel,它可能会这样:)老实说,我正在认真考虑,因为我显然是唯一受它困扰的人。我想知道你是否可以在设备级别(devmgmt.msc)禁用它好的一点,我可以从C开始,然后基于
System.Environment.GetLogicalDrives()
从那里开始工作。很好。我将这一个标记为“正确”答案,尽管我实际上在使用另一个(因为它运行得更快),但有一个有争议的假设:a和B是需要避免的软盘驱动器。