Как получить список съемных дисков в C#?
Я хочу получить список съемных дисков в C#. Я хочу пропустить локальные диски. Потому что я хочу, чтобы пользователь сохранил файл только на съемном диске.
4 ответа
Вам нужно будет ссылаться System.IO
для этого метода.
var driveList = DriveInfo.GetDrives();
foreach (DriveInfo drive in driveList)
{
if (drive .DriveType == DriveType.Removable)
{
//Add to RemovableDrive list or whatever activity you want
}
}
Или для поклонников LINQ:
var driveList = DriveInfo.GetDrives().Where(d => d.DriveType == DriveType.Removable);
добавленной
Что касается части "Сохранение", насколько я знаю, я не думаю, что вы можете ограничить область, в которой пользователю разрешено сохранять, с помощью SaveFileDialog, но вы могли бы выполнить проверку после того, как показали 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");
}
}
ИЛИ ЖЕ
Наилучшим вариантом будет создание собственного диалогового окна "Сохранить", которое содержит древовидное представление, отображающее только съемные диски и их содержимое для сохранения пользователем! Я бы порекомендовал этот вариант.
Надеюсь это поможет
Как насчет:
var removableDrives = from d in System.IO.DriveInfo.GetDrives()
where d.DriveType == DriveType.Removable;
Вы также можете использовать WMI, чтобы получить список съемных дисков.
ManagementObjectCollection drives = new ManagementObjectSearcher (
"SELECT Caption, DeviceID FROM Win32_DiskDrive WHERE InterfaceType='USB'"
).Get();
Отредактировано на основе комментария:
После того, как вы получите список дисков, найдите GUID и добавьте их в коллекцию SaveFileDialogInstance.CustomPlaces.
Код ниже нужно немного подправить...
System.Windows.Forms.SaveFileDialog dls = new System.Windows.Forms.SaveFileDialog();
dls.CustomPlaces.Clear();
dls.CustomPlaces.Add(AddGuidOfTheExternalDriveOneByOne);
....
....
dls.ShowDialog();
Эта статья пытается помочь: