我可以使用WMI和System.Management命名空间测试软盘驱动器吗?
时间:2020-03-06 14:56:42 来源:igfitidea点击:
我会发现软盘插入状态:
- 没有插入软盘
- 插入未格式化的软盘
- 插入格式化的软盘
是否可以使用System.Management命名空间中的" WMI"来确定?
如果是这样,我可以在软盘插入状态更改时生成事件吗?
解决方案
这来自Scripting Center @ MSDN:
strComputer = "." Set objWMIService = GetObject( _ "winmgmts:\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery _ ("Select * From Win32_LogicalDisk Where DeviceID = 'A:'") For Each objItem in colItems intFreeSpace = objItem.FreeSpace If IsNull(intFreeSpace) Then Wscript.Echo "There is no disk in the floppy drive." Else Wscript.Echo "There is a disk in the floppy drive." End If Next
通过检查Win32_LogicalDisk类的其他成员,我们还可以知道它是否已格式化。
使用Bob Kings的想法,我编写了以下方法。
它适用于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(); } } }