访问图像文件时抛出UnauthorizedAccessException

时间:2018-06-26 05:05:58

标签: c# file unauthorized unauthorizedaccessexcepti

我在访问和复制图像文件时遇到问题。这是我的代码

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 :(得分:1)

任何年轻的 Codeling Jedi 都应该查看该文档,我认为您已经知道了。但是-

File.SetAccessControl Method (String, FileSecurity)

  

应用FileSecurity描述的访问控制列表(ACL)条目   对象指向指定文件。

例外

  

UnauthorizedAccessException

     
      
  • path参数指定了一个只读文件。
  •   
  • 当前平台不支持此操作。
  •   
  • path参数指定了一个目录。
  •   
  • 呼叫者没有所需的权限。
  •   

这可能是权限问题。最简单的解决方法是确保您的应用程序具有执行此操作的适当权限。

要么

  • 通过以 Administrator
  • 身份运行您的应用
  • 向您的用户授予相应的权限,以设置 ACL

但是,应检查其他条件是否适用