“对路径的访问被拒绝.” 是怎么回事

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“对路径的访问被拒绝.” 是怎么回事相关的知识,希望对你有一定的参考价值。

对路径的访问被拒绝可能存在下面几种情况
1、可能路径不存在
2、可能路径有非法字符
3、可能用户没有访问该路径的权限
一般大部分情况可能是因为权限问题,但是其它原因也有可能出现,这就需要做一步步排查。
关于这个“对路径""的访问被拒绝”的这个问题解答,网上大部分说的是因为目录权限不够。有时候这个问题的原因却不在这里。这个问题只是结果,原因也可能是其他的,如目录不存在,文件不存在等等。
参考技术A

    右键打开报错路径的的菜单,选择“属性”。

    在“属性”窗体中切换到“安全”选项框

    在“安全”选项框中,点击“编辑”,进入“权限”窗体

    在“用户和组”中选择“IIS_USRS”,赋予其“完全控制”权限。

    PS:只有写入权限是不够的,仍旧会报同样的错误。

    完成配置后,就可以在网站后台删除图片或其他文件


参考技术B 回答
提问

点击了还是路径访问失败。

回答

所有的都没办法访问?

提问

目前您说的方法和百度的方法都试了,没解决。

回答

1、鼠标右击打不开的文件夹,选择”属性“。2、选择”安全“,要更改权限,请点击”编辑“。3、然后点击”添加“按钮4、输入对象名称”everyone“,然后点击确定5、将Everyone的权限下面的全部权限勾选,然后点击确定。 您再试试这个方案看看。

提问

其中有个特殊权限点不了,然后还是路径访问失败。

回答

您这个没办法实际操作没办法判断是哪种路经非法访问,不过这种问题如果去电脑店的话,一般都是不收费的,您可以参考下。

参考技术C 文件打,或者其程序所共享着.假作保护,程序都读写,打文件文件原始状态,都改写保存,能保存程序改写状态.其改写,能应用.所系统根据同需求,作相应访问写入保护. 比用记事本,打同文件副本,并编辑,保存.结? 另外,记超级兔功能文件保护,保护文件,能打.能通解除保护或结束保护进程打文件 参考技术D 你那文件打开了,或者被其它的程序所共享着.假如不作保护的,有多个程序都可以对他读写,它们打开文件时是文件原始状态,然而都对他改写后又保存的,那样就只能保存最后一个程序对它改写的状态.其它对它改写的,将不能应用到.所以系统会根据不同需求,作相应的访问和写入保护.
就比如你用多个记事本,打开多个同一的文件副本,并对他们编辑,保存.结果会怎样?

另外,记得超级兔子有个功能是对文件保护的,他保护了的文件,不能打开.只能通过解除保护或结束它的保护进程来打开文件

Zipfile OpenRead 在 c# uwp 应用程序中抛出对路径的访问被拒绝异常?

【中文标题】Zipfile OpenRead 在 c# uwp 应用程序中抛出对路径的访问被拒绝异常?【英文标题】:Zipfile OpenRead throws Access to the path is denied exception in c# uwp app? 【发布时间】:2019-10-16 03:30:14 【问题描述】:

我几个月来一直在使用以下代码,没有出现任何问题,突然间,它向我抛出了“拒绝访问路径”异常。我一直在清单中使用“BroadFileSystemAccess”,并且正在使用文件选择器来选择我作为 StorageFile 参数传递的文件。我还确保应用程序启用了 FileAccess。

怎么了?经过数小时的调试和搜索后无法弄清楚......

   public async Task AddImageToPlaylist(StorageFile NewImage)
   

                try 
                    using (ZipArchive archive = ZipFile.OpenRead(NewImage.Path))
                    
                        foreach (ZipArchiveEntry member in archive.Entries)
                        
                            NumSlides += 1;
                            AllFiles.Add(new imgitem  type = "zip", zipname = NewImage.Path, filepath = member.FullName, imgname = NewImage.Name, imgsize = (ulong)member.Length, imgdate = member.LastWriteTime, index = NumSlides, ImgRating = 0 );
                         

                    

                
                catch (Exception)
                
                    await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>  MessageBlock.Text = "Exception encountered loading ZIP file"; );
                

      

【问题讨论】:

【参考方案1】:

将您的 StorageFile 流式传输到 ZipArchive 中,而不是丢弃 StorageFile 并使用 ZipFile.Open 从其路径重新打开文件。类似于以下内容:

using System.IO;
....
ZipArchive archive = new ZipArchive(await NewImage.OpenStreamForReadAsync());

BroadFileSystemAccess 仅通过 Windows.Storage 类提供访问权限 - 请参阅 Accessing additional locations。 ZipFile.OpenRead() 尝试使用 System.IO 而不是 Windows.Storage 直接重新打开路径。除非路径位于应用程序无需添加权限即可读取的位置(例如应用程序数据),否则此操作将失败。

【讨论】:

【参考方案2】:

对于读取和写入文件,您的应用程序应在 aap.manifest 中具有管理权限

<security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <!-- UAC Manifest Options
             If you want to change the Windows User Account Control level replace the 
             requestedExecutionLevel node with one of the following.

        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

            Specifying requestedExecutionLevel element will disable file and registry virtualization. 
            Remove this element if your application requires this virtualization for backwards
            compatibility.
        -->
        <requestedExecutionLevel level="requireAdministrator" uiAccess="true" />
      </requestedPrivileges>
      <applicationRequestMinimum>
        <defaultAssemblyRequest permissionSetReference="Custom" />
        <PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" />
      </applicationRequestMinimum>
    </security>

【讨论】:

可能是的,但是这个应用程序不需要管理权限,只需要用户使用文件选择器选择的目录的权限。 UWP 真是一团糟……我很遗憾选择了这种方法……但是我在项目中太先进了。【参考方案3】:

我使用与 Francois 相同的代码,但两次通过类似于以下代码的 zip 文件。第二次会随机得到这个错误。我终于想出了如何用一个循环来完成这项工作,现在它运行良好。顺便说一句,我尝试了一切,包括在循环之间放置一个 Sleep(1000) 甚至是用户提示,但没有任何区别。通常情况下,这样的问题有时是结构问题的指标,解决方案可以产生更清晰的代码,即一个循环而不是两个循环。

            try 
                using (ZipArchive archive = ZipFile.OpenRead(NewImage.Path))
                
                    foreach (ZipArchiveEntry member in archive.Entries)
                    
                        // do some preprocessing here
                    
                
                using (ZipArchive archive = ZipFile.OpenRead(NewImage.Path))
                
                    foreach (ZipArchiveEntry member in archive.Entries)
                    
                        // do final processing here
                    
                
            
            catch (Exception e)
            
                Console.WriteLine($"e.Message");
            

【讨论】:

以上是关于“对路径的访问被拒绝.” 是怎么回事的主要内容,如果未能解决你的问题,请参考以下文章

“对路径的访问被拒绝.” 是怎么回事

“对路径的访问被拒绝.” 是怎么回事

对路径的访问被拒绝怎么办?

对路径的访问被拒绝,怎么解决

System.UnauthorizedAccessException:对路径的访问被拒绝(UWP C#)

创建组件“XX”失败,错误信息为:“SystemUnauthorizedAccessException”:对路径“...”的访问被拒绝