Win32_LogicalDisk因软盘而失败

时间:2008-10-03 19:33:21

标签: .net wmi

使用Bob King的想法,我写了以下方法。

它适用于CD,可移动驱动器和常规驱动器。

但是对于软盘,它总是返回“不可用”。有什么想法吗?

public static void TestFloppy( char driveLetter ) {
    using( var searcher = new ManagementObjectSearcher(  @"SELECT * FROM Win32_LogicalDisk WHERE DeviceID = '" + driveLetter + ":'" ) )
    using( var logicalDisks = searcher.Get() ) {
        foreach( ManagementObject logicalDisk in logicalDisks ) {  
          var fs = logicalDisk[ "FreeSpace" ];
            Console.WriteLine( "FreeSpace = " + ( fs ?? "Not Available" ) );
            logicalDisk.Dispose();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我很抱歉我没有更好的答案,但我曾经做同样的事情(使用ManagementObjectSearcher)并发现每次代码运行时,软盘驱动器都会执行某种搜索/初始化序列。

所以我改为下面并进行交流:

ManagementClass comp = new ManagementClass(scope, new ManagementPath(obj), null);
comp.Get();
objs = comp.GetInstances();

我想说这是WMI中的一个已知错误,但不幸的是代码注释没有留下任何提示:(