Como descobrir dispositivos de armazenamento USB e unidades de CD/DVD graváveis ​​(C#)

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

  •  09-06-2019
  •  | 
  •  

Pergunta

Como posso descobrir quaisquer dispositivos de armazenamento USB e/ou gravadores de CD/DVD disponíveis em um determinado momento (usando C# .Net2.0).

Gostaria de apresentar aos usuários uma variedade de dispositivos nos quais um arquivo pode ser armazenado para remoção física - ou seja,não o disco rígido.

Foi útil?

Solução

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...
  }
}

A documentação da classe DriveInfo está aqui:

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

Outras dicas

este é o código VB.NET para verificar se há unidades removíveis ou unidades de CDRom conectadas ao computador:

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

não será tão difícil modificar este código para um equivalente em c# e muito mais tipo de driveestão disponíveis.
Do MSDN:

  • Desconhecido: O tipo de unidade é desconhecido.
  • NoRootDirectory: A unidade não possui um diretório raiz.
  • Removível: A unidade é um dispositivo de armazenamento removível, como uma unidade de disquete ou uma unidade flash USB.
  • Fixo: A unidade é um disco fixo.
  • Rede: A unidade é uma unidade de rede.
  • CD-ROM: A unidade é um dispositivo de disco óptico, como um CD ou DVD-ROM.
  • Bater: A unidade é um disco RAM.

em c# você pode obter o mesmo usando a classe 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 é um módulo completo para VB.NET:
Sistema de importação.IO
Módulo GetDriveNamesByType
Função GetDriveNames (opcional ByVal DType como DriveType = DriveType.Removable) como ListBox
Para cada DN como System.IO.DriveInfo em My.Computer.FileSystem.Drives
Se DN.DriveType = DType então
GetDriveNames.Items.Add(DN.Nome)
Fim se
Próximo
Função 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top