使用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();
}
}
}
答案 0 :(得分:1)
我很抱歉我没有更好的答案,但我曾经做同样的事情(使用ManagementObjectSearcher)并发现每次代码运行时,软盘驱动器都会执行某种搜索/初始化序列。
所以我改为下面并进行交流:
ManagementClass comp = new ManagementClass(scope, new ManagementPath(obj), null);
comp.Get();
objs = comp.GetInstances();
我想说这是WMI中的一个已知错误,但不幸的是代码注释没有留下任何提示:(