Чтение файла, открытого из «сканеров и камер», бросает несавторизованнуюaccessException

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

  •  09-10-2019
  •  | 
  •  

Вопрос

Наше приложение требует, чтобы пользователь выбрал фотографию с их камеры. Камеры, с которыми я тестировал при добавлении этой функции, все будет отображаться в качестве буквы диска в «Мой компьютер», поэтому загрузка и работа с изображением было немаловым. У коллектора дал мне свою камеру, а не крепление в качестве диска, она вызывает ужасный «мастер сканера и камеры». Мне поощрялось увидеть, что в «Мой компьютер» была запись для камеры, и действительно, я смог просмотреть и выбрать файлы из стандартного OpenFileDialog. - ЗДОРОВО!

За исключением того, что когда я пытаюсь получить доступ к файлу, я получаю «несавторизованныйaccessException». При расследовании я вижу, что он на самом деле загружает файлы из этого местоположения: C: Документы и настройки SK Локальные настройки Временные Интернет-файлы content.ie5 axy0dne3

Что в мире?! IE5.5 ??

Отсюда вещей продолжают идти вниз. Это местоположение, по-видимому, очень хорошо скрытое местоположение, которое я могу перейти только к непосредственному вводу пути в баре Explorer. Затем я подумал, что могу просто скопировать файл в удобное местоположение и работать с ним оттуда. Поэтому я сделал это, но я до сих пор не могу работать с файлом, бросать то же самое исключение: доступ к пути к пути «C: Documents и Settings SK локальные настройки Temp Img_0005 [1] .jpg 'запрещен.

Похоже, что настройки разрешений были скопированы вместе с файлом (имеет смысл).

Как обходной путь, я поручил своим пользователям использовать ужасный маленький волшебник, скопируйте файлы на временное место, а затем выберите их там. Мне это не нравится, но мне нужно было использовать эту функцию сегодня. С обломком на месте я бы сейчас хотел бы попытаться выполнить эту работу, если это возможно. В идеале я мог бы просто работать с файлом, не копируя его в другие места и т. Д. То, что я не понимаю, поскольку неавторизованныйAccessexception бросает.

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

Это было полезно?

Решение

Файл только для чтения. Я должен был проверить это!

Конечно, есть много способов справиться с этим. Сначала я подумал: «Я просто заставлю читать только атрибут», но потом подумал «ждать, мне не нужно делать это, я ведь только читаю только файл» Моя библиотека IO и обнаружить, что я не явно не установил Fileabess, чтобы прочитать так, как я должен:

public static byte[] ReadWholeFileBytes(string filename)
{
    Guard.ArgumentNotNullOrEmptyString(filename, "filename");

    if(!File.Exists(filename))
    {
        throw new FileNotFoundException("Failed finding file " + filename);
    }

    using (Stream stream = new FileStream(filename, FileMode.Open, FileAccess.Read))
    {
        return ReadWholeStream(stream);
    }
}

Однако ради этого ответа завершено для других, вы можете бросить читать только с этим небольшим количеством кода:

File.SetAttributes(openFile.FileName, FileAttributes.Normal);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top