我想获取硬盘的逻辑盘符,用 string[] dirs = Directory.GetLogicalDrives();和ManagementClass diskClass = new ManagementClass("Win32_LogicalDisk");ManagementObjectCollection disks = diskClass.GetInstances();获取到的全都是所有磁盘的盘符,有没有什么方法,可以只获取硬盘的盘符,其他的,如光驱、U盘的,我都不要啊?

解决方案 »

  1.   

    private void button1_Click(object sender, System.EventArgs e)
     {
      ManagementClass diskClass = new ManagementClass("Win32_LogicalDisk");
      ManagementObjectCollection disks = diskClass.GetInstances();
      foreach(ManagementObject disk in disks)
      {
      try
      {
      Console.WriteLine(disk["Name"].ToString());
        
      }
      catch(Exception exc)
      {
      MessageBox.Show(exc.Message, "提示");
      }
      }   ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
      String hardDiskID=null;
      foreach (ManagementObject mo in searcher.Get())
      {
      hardDiskID = mo["SerialNumber"].ToString().Trim();
      break;
      }
      

  2.   

    你这个方法我试过了,同样是获得所有盘符。另外就是多了一个硬盘的序列号。不过问题我已经解决了。用
     DriveInfo[] dis = DriveInfo.GetDrives();            string str = "";
                string str1 = "";
                foreach (DriveInfo di in dis)
                {
                    if (di.DriveType == DriveType.Fixed)//磁盘类型为硬盘。
                    {
                        str += di.Name;
                    }
                }
    这个就可以解决了。
      

  3.   


         //难道是这个
          DriveInfo[] s = DriveInfo.GetDrives();
          foreach (DriveInfo drive in s)
          {
            if (drive.DriveType == DriveType.Fixed)
            {
              MessageBox.Show("当前插入的盘符为:" + drive.Name.ToString());
            }
          }