Определите, доступен ли съемный диск только для чтения

Я работаю над определением, доступен ли съемный диск только для чтения, используя C # (.NET 4.0). Я прочитал много статей, в которых подробно описывается процесс определения того, доступен ли каталог только для чтения, используя следующий код, полученный из эту страницу:

var di = new DirectoryInfo(folderName);

if(di.Exists)
{
    if (di.Attributes.HasFlag(FileAttributes.ReadOnly))
    {
        //IsReadOnly...
    }
}

Тем не менее, я пробовал этот метод с использованием корневого каталога, и хотя весь диск доступен только для чтения (я использую заблокированную SD-карту), я никогда не добираюсь до строки //IsReadOnly.... Содержимое диска не может быть гарантировано (он может быть пустым или содержать много-много файлов), поэтому о тестировании любого подкаталога не может быть и речи. Я знаю, что простой тест - записать небольшой файл на диск и перехватить любые исключения, но я бы предпочел другой метод.

Кто-нибудь знает хорошее решение этой проблемы?


person BryanWallin    schedule 29.10.2014    source источник
comment
Как ты не получаешь ошибку? (di.Exists ()) должно быть (di.Exists). Вы уверены, что имя папки существует? Убедитесь, что с путем нет проблем.   -  person deathismyfriend    schedule 29.10.2014
comment
знакомы ли вы с WMI, если нет, вот хорошее чтение, а также хорошее место для начала Класс Win32_LogicalDisk   -  person MethodMan    schedule 29.10.2014
comment
Ах да, я упустил проблему с di.Exists () в коде. На самом деле я не проверяю, существует ли он в моем коде, потому что я получаю список дисков из запроса LINQ с помощью DriveInfo.GetDrives (). Я изменю код, чтобы он был правильным.   -  person BryanWallin    schedule 29.10.2014