How to get the list of removable disk in c#?

后端 未结 3 1079
深忆病人
深忆病人 2020-12-31 03:44

I want to get the list of removable disk in c#. I want to skip the local drives. Because i want the user to save the file only in removable disk.

相关标签:
3条回答
  • 2020-12-31 04:04

    You can also use WMI to get the list of removable drives.

    ManagementObjectCollection drives = new ManagementObjectSearcher (
         "SELECT Caption, DeviceID FROM Win32_DiskDrive WHERE InterfaceType='USB'"
    ).Get();
    

    Edited based on comment:

    After you get the list of drives get there GUID's and add them to SaveFileDialogInstance.CustomPlaces collection.

    The code below need some tweaking...

    System.Windows.Forms.SaveFileDialog dls = new System.Windows.Forms.SaveFileDialog();
    dls.CustomPlaces.Clear();
    dls.CustomPlaces.Add(AddGuidOfTheExternalDriveOneByOne);
    ....
    ....
    dls.ShowDialog();
    
    0 讨论(0)
  • 2020-12-31 04:10

    How about:

    var removableDrives = from d in System.IO.DriveInfo.GetDrives()
                          where d.DriveType == DriveType.Removable;
    
    0 讨论(0)
  • 2020-12-31 04:14

    You will need to reference System.IO for this method.

    var driveList = DriveInfo.GetDrives();
    
    foreach (DriveInfo drive in driveList)
    {
        if (drive .DriveType == DriveType.Removable)
        {
        //Add to RemovableDrive list or whatever activity you want
        }    
    }
    

    Or for the LINQ fans:

    var driveList = DriveInfo.GetDrives().Where(d => d.DriveType == DriveType.Removable);
    



    Added
    As for the Saving part, as far as I know I don't think you can restrict where the user is allowed to save to using a SaveFileDialog, but you could complete a check after you have shown the SaveFileDialog.

    if(saveFileDialog.ShowDialog() == DialogResult.OK)
    {
      if (CheckFilePathIsOfRemovableDisk(saveFileDialog.FileName) == true)
      {
      //carry on with save
      }
      else
      {
      MessageBox.Show("Must save to Removable Disk, location was not valid");
      }
    }
    

    OR

    The best option would be to create your own Save Dialog, which contains a tree view, only showing the removable drives and their contents for the user to save to! I would recommend this option.

    Hope this helps

    0 讨论(0)
提交回复
热议问题