c# .net removable-drive driveinfo

¿Cómo obtener la lista de disco extraíble en c#?



.net removable-drive (4)

Este artículo busca hacer el truco:

http://zayko.net/post/How-to-get-list-of-removable-drives-installed-on-a-computer-(C).aspx

Quiero obtener la lista de disco extraíble en c #. Quiero saltar las unidades locales. Porque quiero que el usuario guarde el archivo solo en un disco extraíble.


Qué tal si:

var removableDrives = from d in System.IO.DriveInfo.GetDrives() where d.DriveType == DriveType.Removable;


También puede usar WMI para obtener la lista de unidades extraíbles.

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

Editado basado en el comentario:

Después de obtener la lista de unidades, ingrese los GUID y agréguelos a la colección SaveFileDialogInstance.CustomPlaces.

El código de abajo necesita algunos ajustes ...

System.Windows.Forms.SaveFileDialog dls = new System.Windows.Forms.SaveFileDialog(); dls.CustomPlaces.Clear(); dls.CustomPlaces.Add(AddGuidOfTheExternalDriveOneByOne); .... .... dls.ShowDialog();


Necesitará hacer referencia a System.IO para este método.

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

O para los fanáticos de LINQ:

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



Adicional
En cuanto a la parte de Ahorro, hasta donde sé, no creo que pueda restringir dónde se le permite al usuario guardar el uso de un SaveFileDialog, pero podría completar una verificación después de haber mostrado el 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"); } }

O

La mejor opción sería crear su propio cuadro de diálogo Guardar, que contiene una vista de árbol, y solo muestra las unidades extraíbles y su contenido para que el usuario las guarde. Yo recomendaría esta opción.

Espero que esto ayude