Как обнаружить запоминающие устройства USB и записывающие CD / DVD приводы (C #) - PullRequest
5 голосов
/ 09 сентября 2008

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

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

Ответы [ 4 ]

9 голосов
/ 09 сентября 2008
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

1 голос
/ 09 сентября 2008

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

}
1 голос
/ 09 сентября 2008

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

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

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

  • Неизвестно: Тип привода неизвестен.
  • NoRootDirectory: На диске нет корневого каталога.
  • Съемный: Диск представляет собой съемное запоминающее устройство, такое как дисковод гибких дисков или флэш-накопитель USB.
  • Исправлено: Диск является фиксированным диском.
  • Сеть: Диск является сетевым.
  • CDRom: Диск представляет собой устройство на оптических дисках, например, CD или DVD-ROM.
  • Оперативная память: Диск является RAM-диском.
0 голосов
/ 05 октября 2012

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

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