拒绝对路径的 C# 访问

本文关键字:访问 路径 拒绝 | 更新日期: 2023-09-27 18:33:14

嘿伙计们,所以我正在开发一个程序,它会删除某些目录文件,主要是临时文件,除了我甚至知道我添加了一个捕获块也会出现错误。系统.未经授权访问异常。在捕获异常上,我在那里收到错误:

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");
}

拒绝对路径的 C# 访问

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

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

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

您可能需要研究 C# - 如何删除临时 Internet 文件中的响应。请注意有关可能不得不"杀死IE"的评论。

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

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

如果要提示用户提升应用程序,可以执行此操作。

强制应用程序以管理员身份运行 [仅限 Winforms]

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

在您

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

使用文件的可能性更大,因为您从Windows操作系统用于临时使用的文件夹中删除。