Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 访问图像文件时引发UnauthorizedAccessException_C#_File_Unauthorized_Unauthorizedaccessexcepti - Fatal编程技术网

C# 访问图像文件时引发UnauthorizedAccessException

C# 访问图像文件时引发UnauthorizedAccessException,c#,file,unauthorized,unauthorizedaccessexcepti,C#,File,Unauthorized,Unauthorizedaccessexcepti,我在访问和复制图像文件时遇到问题。这是我的密码 private void button1_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.ShowDialog(); string fileName = ""; fileName = openFileDial

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

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(文件名,oFileSecurity)

任何一个年轻的Codeling绝地武士都应该看一下文件,我想你已经看过了。然而-

应用文件安全性描述的访问控制列表(ACL)项 对象添加到指定的文件

例外情况

未经授权的访问例外

  • path参数指定了一个只读文件
  • 当前平台不支持此操作
  • path参数指定了一个目录
  • 调用方没有所需的权限
这可能是一个问题。最简单的修复方法是确保您的应用程序具有执行此操作的适当权限

或者

  • 通过以管理员身份运行应用程序来提升应用程序
  • 为用户授予设置ACL的适当权限

但是,检查其他条件是否适用应该是明智和谨慎的

哪一行引发异常?是的,您遗漏了最重要的信息,包括
File.SetAccessControl
File.Copy
可以引发
UnauthorizedAccessException
,在这两种情况下,您可能没有权限这样做