Как обнаружить USB-накопители и перезаписываемые приводы CD/DVD (C#)

Как я могу обнаружить любые USB-накопители и/или устройства записи CD/DVD, доступные в данный момент (используя C# .Net2.0).

Я хотел бы предоставить пользователям выбор устройств, на которых файл может быть сохранен для физического удаления, то есть не на жестком диске.


person Stuart Helwig    schedule 09.09.2008    source источник


Ответы (4)


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

Документация по классу DriveInfo находится здесь:

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

person Mark Ingram    schedule 09.09.2008

это код VB.NET для проверки любых съемных дисков или приводов CD-ROM, подключенных к компьютеру:

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

этот код будет несложно преобразовать в эквивалент ac#, и доступны другие driveType.
Из MSDN:

  • Неизвестно: тип диска неизвестен.
  • NoRootDirectory: на диске нет корневого каталога.
  • Съемный. Диск представляет собой съемное запоминающее устройство, например дисковод для гибких дисков или флэш-накопитель USB.
  • Фиксированный: это фиксированный диск.
  • Сетевой: диск является сетевым диском.
  • CDRom: дисковод — это оптический дисковод, например CD или DVD-ROM.
  • Оперативная память: диск представляет собой электронный диск.
person sven    schedule 09.09.2008

в С# вы можете получить то же самое, используя класс 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);
    }

}
person Hath    schedule 09.09.2008

Это полный модуль для VB.NET:
Imports System.IO
Модуль GetDriveNamesByType
Функция GetDriveNames (необязательно ByVal DType As DriveType = DriveType.Removable) As ListBox
Для каждого DN As System.IO .DriveInfo In My.Computer.FileSystem.Drives
Если DN.DriveType = DType, то
GetDriveNames.Items.Add(DN.Name)
End If
Next
End Function
Конечный модуль

'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>
person Searush    schedule 05.10.2012