2016-02-05 161 views
0

嘿家伙,所以我在一个程序上工作,它删除了某些目录文件,主要是临时文件,除了我得到一个错误,甚至知道我添加了一个catch块。 System.UnauthorizedAccessException。在捕捉IOException异常我到达那里的错误:C#访问路径被拒绝

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

此外,DeleteInternetFiles方法中的参数称为字符串internetDirectory,某些原因无法发布它。 – DialUp

+0

第二个catch块只捕获原始try中代码中的UnauthorizedAccessException,而不是从第一个catch块中获取。 – BurningLights

回答

2

你的第二个电话到File.Delete(internetDirectory);,catch块内,很可能是问题。该程序在尝试删除该文件时已经遇到错误,然后再次尝试。有两件事情可能会发生:

  1. 执行程序没有在其他用户的目录权限设置为 删除文件的用户帐户。

  2. 某些文件仍然在使用,因此不能被删除(如 在Internet Explorer中当前打开的。

你可能想研究C# - How to Delete temporary internet files响应。请注意有关可能具有的意见“杀IE”。

+0

没有工作的链接:/我试过这个代码相同的错误。 – DialUp

0

我看到这里的问题是,你执行删除操作需要Administrator特权。

你可以做的就是尽量右键>以管理员身份运行应用程序,然后执行操作。

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

Force application to Run as Administrator [Winforms only]

+0

是否这样,我右键单击作为管理员仍然同样的错误运行。 – DialUp

+0

凹凸。只是碰撞这个职位。 – DialUp

0

你得到这个错误,因为该文件或文件夹,尝试删除未正确此访问。

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

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