Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在不使用软盘的情况下获取本地驱动器_C#_Hard Drive - Fatal编程技术网

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是需要避免的软盘驱动器。