获取本地驱动器而不会发送软盘

时间:2011-12-13 07:43:35

标签: c# hard-drive

我正在寻找一种扫描硬盘的方法,而不会产生试图读取软盘驱动器以查看是否有磁盘的系统的“软盘税”。

重要:我知道如何使用DriveInfo.GetDrives来获取硬盘,但这需要在创建列表后过滤。我想要做的是在之前过滤,如果可能的话。

3 个答案:

答案 0 :(得分:2)

你可以试试这个:

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不是软盘。您可以在此处找到完整的文档:http://msdn.microsoft.com/en-us/library/windows/desktop/aa394173%28v=vs.85%29.aspx

答案 1 :(得分:1)

不是这样......在getDrives调用期间,驱动器信息根本没有过滤或排除任何类型驱动器的功能。

但也许还有另一种方式。 (这是未经测试但可能是一个想法:)如果您只是在寻找特定驱动器的可用性,您可以使用特定驱动器的名称实例化DriveInfo类,看看它是否有效?

答案 2 :(得分:1)

CD驱动器和软盘驱动器尚未就绪 所以你可以试试这个:

- - * - -
- - * * *
- - - - *
- - - * *
- - - * -