выбрасывает UnauthorizedAccessException при доступе к файлу изображения - PullRequest
0 голосов
/ 26 июня 2018

У меня проблема с доступом и копированием файла изображения.Вот мой код

private void button1_Click(object sender, EventArgs e)
    {
        OpenFileDialog openFileDialog1 = new OpenFileDialog();

        openFileDialog1.ShowDialog();

        string fileName = "";

        fileName = openFileDialog1.FileName;

        string newPath = @"C:\Users\grafik5\source\repos\ConsoleApplication1\x64\Debug";
        string newFileName = @"image";

        string ext = Path.GetExtension(fileName);

        openFileDialog1.Dispose();

        newPath = Path.Combine(newPath, newFileName + ext);         

        if (fileName != "")
        {
            try
            {
                FileSecurity oFileSecurity = new FileSecurity();
                oFileSecurity.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow));
                File.SetAccessControl(fileName, oFileSecurity);

            }
            catch (UnauthorizedAccessException)
            {              
                MessageBox.Show("Error");
            }

            File.Copy(fileName, newPath, true);

            Process process = new Process();
            process.StartInfo.FileName = @"C:\Users\grafik5\source\repos\ConsoleApplication1\x64\Debug\ConsoleApplication1.exe";
            process.Start();
            process.WaitForExit();

            flag1 = true;
        }
    }

Я не знаю, что мне нужно делать.Моя программа всегда выдает сообщение об ошибке.Другой процесс будет читать скопированное изображение.Это сделает обработку изображений.Нет проблем с процессом работы.Я проверил это.

Ошибка в File.SetAccessControl (fileName, oFileSecurity);

1 Ответ

0 голосов
/ 26 июня 2018

Любой молодой Кодер-джедай должен был взглянуть на документацию, которая, я полагаю, у вас есть.Однако -

File.SetAccessControl Method (String, FileSecurity)

Применяет записи списка управления доступом (ACL), описанные объектом FileSecurity, к указанному файлу.

Исключения

UnauthorizedAccessException

  • Параметр пути указывает файл, доступный только для чтения.
  • Эта операция не поддерживается на текущей платформе.
  • Параметр пути указывает каталог.
  • У вызывающей стороны нет необходимых разрешений.

Это, вероятно, вещь с разрешениями.Самое простое решение - убедиться, что ваше приложение имеет соответствующие разрешения для этого.

Либо

  • Поднимите свое приложение, запустив его под именем Администратор ,
  • Дайте вашему пользователю соответствующие разрешения для установки ACL

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

...