获取本地驱动器,而不需要访问软盘

本文关键字:不需要 访问 软盘 驱动器 获取 | 更新日期: 2023-09-27 18:17:34

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

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

获取本地驱动器,而不需要访问软盘

你可以试试:

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

Not as such…驱动器信息在getDrives调用期间没有过滤或排除任何类型的驱动器的功能。

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

光盘驱动器和软盘驱动器未准备好所以你可以试试:

foreach (var dr in DriveInfo.GetDrives())
{
    if (dr.IsReady == true)
    {
        Console.WriteLine(string.Format("name : {0}   type : {1}", dr, dr.DriveType));
    }
}