0

使用 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();
        }
    }
}
4

1 回答 1

1

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

因此,我改为以下内容并进行交互:

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

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

于 2008-10-03T20:45:31.217 回答