try something likeusing System;
using System.Management;class TestDrive
{  public static void Main()
  {
     String[] sDriveTypeList = { 
            /*0*/ "Unknown",
            /*1*/ "No Root Directory",
            /*2*/ "Removable Disk",
            /*3*/ "Local Disk",
            /*4*/ "Network Drive",
            /*5*/ "Compact Disc",
            /*6*/ "RAM Disk"};
    ManagementObject mo = new ManagementObject();    mo.Path = new ManagementPath("Win32_LogicalDisk='F:'");    Console.WriteLine("Volume name:" + mo["VolumeName"].ToString());
    Console.WriteLine("Volume Serial Number:" + mo["VolumeSerialNumber"].ToString());
  //  Console.WriteLine("Disk Type:" + mo["DriveType"].ToString());
    Console.WriteLine("Disk Type:" + sDriveTypeList[Convert.ToInt32(mo["DriveType"])]);
  }
}

解决方案 »

  1.   

    提供对大量管理信息和管理事件集合的访问,这些信息和事件是与根据 Windows 管理规范 (WMI) 结构对系统、设备和应用程序设置检测点有关的。应用程序和服务可以使用从 ManagementObjectSearcher 和 ManagementQuery 派生的类,查询感兴趣的管理信息(例如在磁盘上还剩多少可用空间、当前 CPU 利用率是多少、某一应用程序正连接到哪一数据库等等);或者应用程序和服务可以使用 ManagementEventWatcher 类预订各种管理事件。这些可访问的数据可以来自分布式环境中托管的和非托管的组件。
      

  2.   

    using System;using System.Management;            
    .class Sample_ManagementObject{ public static int Main(string[] args) 
    {
    SelectQuery query=new SelectQuery("Select * From Win32_LogicalDisk");
    ManagementObjectSearcher searcher=new ManagementObjectSearcher(query); foreach(ManagementBaseObject disk in searcher.Get())
    {
    Console.WriteLine("\r\n"+disk["Name"] +" "+disk["DriveType"] + " " + disk["VolumeName"]);
    }
    Console.ReadLine(); return 0; }}disk["DriveType"] 的返回值意义如下:1 No type 
    2 Floppy disk 
    3 Hard disk 
    4 Removable drive or network drive 
    5 CD-ROM 
    6 RAM disk 
    --------------------
    只是在我计算机上的计算结果:
    C: 3D: 3E: 5 SQL2000PER_CN