Cómo descubrir dispositivos de almacenamiento USB y unidades de CD/DVD grabables (C#)

StackOverflow https://stackoverflow.com/questions/51645

  •  09-06-2019
  •  | 
  •  

Pregunta

¿Cómo puedo descubrir cualquier dispositivo de almacenamiento USB y/o grabadora de CD/DVD disponible en un momento dado (usando C# .Net2.0)?

Me gustaría presentar a los usuarios una variedad de dispositivos en los que se puede almacenar un archivo para eliminarlo físicamente, es decir,no el disco duro.

¿Fue útil?

Solución

using System.IO;

DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
  if (d.IsReady && d.DriveType == DriveType.Removable)
  {
    // This is the drive you want...
  }
}

La documentación de la clase DriveInfo está aquí:

http://msdn.microsoft.com/en-us/library/system.io.driveinfo.aspx

Otros consejos

Este es el código VB.NET para verificar si hay unidades extraíbles o unidades de CDRom conectadas a la computadora:

Me.lstDrives.Items.Clear()
For Each item As DriveInfo In My.Computer.FileSystem.Drives
    If item.DriveType = DriveType.Removable Or item.DriveType = DriveType.CDRom Then
        Me.lstDrives.Items.Add(item.Name)
    End If
Next

No será tan difícil modificar este código a un equivalente de C# y más. tipo de unidadEstán disponibles.
Desde MSDN:

  • Desconocido: Se desconoce el tipo de unidad.
  • Sin directorio raíz: La unidad no tiene un directorio raíz.
  • Retirable: La unidad es un dispositivo de almacenamiento extraíble, como una unidad de disquete o una unidad flash USB.
  • Fijado: La unidad es un disco fijo.
  • Red: La unidad es una unidad de red.
  • CD ROM: La unidad es un dispositivo de disco óptico, como un CD o DVD-ROM.
  • RAM: La unidad es un disco RAM.

en c# puedes obtener lo mismo usando la clase System.IO.DriveInfo

using System.IO;

public static class GetDrives
{
    public static IEnumerable<DriveInfo> GetCDDVDAndRemovableDevices()
    {
        return DriveInfo.GetDrives().
            Where(d => d.DriveType == DriveType.Removable
            && d.DriveType == DriveType.CDRom);
    }

}

Este es un módulo completo para VB.NET:
Importaciones System.IO
Módulo GetDriveNamesByType
Función GetDriveNames (opcional ByVal DType como DriveType = DriveType.Removable) como ListBox
Para cada DN como System.IO.DriveInfo en My.Computer.FileSystem.Drives
Si DN.DriveType = DType Entonces
GetDriveNames.Items.Add(DN.Nombre)
Terminara si
Próximo
Función final
Módulo final

'Drive Types <br>
'Unknown: The type of drive is unknown. <br>
'NoRootDirectory: The drive does not have a root directory. <br>
'Removable: The drive is a removable storage device, such as a floppy disk drive or a USB flash drive. <br>
'Fixed: The drive is a fixed disk. <br>
'Network: The drive is a network drive. <br>
'CDRom: The drive is an optical disc device, such as a CD or DVD-ROM. <br>
'Ram: The drive is a RAM disk. <br>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top