【问题标题】:C# Access to path deniedC# 访问路径被拒绝
【发布时间】:2016-02-05 02:23:39
【问题描述】:

大家好,我正在开发一个程序,它会删除某些目录文件,主要是临时文件,除了我得到一个错误,即使我知道我添加了一个 catch 块。 System.UnauthorizedAccessException。在 catch ioexception 上我得到了错误:

private void DeleteInternetFiles(string internetDirectory)
{
    DirectoryInfo internetTempStorage = new DirectoryInfo(internetDirectory);
    try
    {
        //this will delete files
        foreach (FileInfo getNetFileInfo in internetTempStorage.GetFiles())
        {
            getNetFileInfo.Delete();
        }

        //this will loop through and delete folders
        foreach (DirectoryInfo tempDirectoryInformation in internetTempStorage.GetDirectories())
        {         
            tempDirectoryInformation.Delete();
        }
    }

    //catch io exception and try delete file again
    catch (IOException)
    {
        //delete file in this directory
        File.Delete(internetDirectory);

        //delete folders in this directory
        Directory.Delete(internetDirectory);
    }

    //catch access exception and delete file again
    catch (UnauthorizedAccessException)
    {
        //delete file in this directory
        File.Delete(internetDirectory);

        //delete folders in this directory
        Directory.Delete(internetDirectory);

    }
}

下面这个是我如何调用该方法的:

if (checkBox1.Checked)
{
    DeleteInternetFiles(@"C:\Users\" + Environment.UserName + @" \AppData\Local\Microsoft\Windows\Temporary Internet Files");
}

【问题讨论】:

  • 另外DeleteInternetFiles方法中的参数叫做string internetDirectory,由于某种原因不能贴出来。
  • 第二个 catch 块仅从原始 try 中的代码中捕获 UnauthorizedAccessException,而不是从第一个 catch 块内部。

标签: c#


【解决方案1】:

您在 catch 块内对File.Delete(internetDirectory); 的第二次调用似乎可能是问题所在。程序在尝试删除文件时已经遇到错误,然后您再次尝试。可能会发生两件事:

  1. 执行程序的用户帐号没有权限 删除其他用户目录中的文件。

  2. 某些文件仍在使用中,因此无法删除(例如 当前在 Internet Explorer 中打开。

您可能想研究C# - How to Delete temporary internet files 中的回复。注意 cmets 可能不得不“杀死 IE”。

【讨论】:

  • 链接无效:/我尝试了同样的代码错误。
【解决方案2】:

我在这里看到的问题是您正在执行的删除操作需要Administrator 权限。

您可以尝试右键单击 > 以管理员身份运行应用程序,然后执行操作。

如果您想提示用户提升您的应用程序,您可以这样做。

Force application to Run as Administrator [Winforms only]

【讨论】:

  • 这样做了,我右键以管理员身份运行还是同样的错误。
  • 凹凸。只是碰到这个帖子。
【解决方案3】:

您收到此错误是因为您尝试删除的文件或文件夹没有此访问权限。

在您执行删除操作时,由于某些文件当前正在使用中,可能会发生这种情况。

文件被使用的可能性更大,因为您从 windows os 用于临时使用的文件夹中删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 2010-11-29
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    相关资源
    最近更新 更多