C#访问路径被拒绝
嘿家伙,所以我在一个程序上工作,它删除了某些目录文件,主要是临时文件,除了我得到一个错误,甚至知道我添加了一个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");
}
你的第二个电话到File.Delete(internetDirectory);
,catch块内,很可能是问题。该程序在尝试删除该文件时已经遇到错误,然后再次尝试。有两件事情可能会发生:
执行程序没有在其他用户的目录权限设置为 删除文件的用户帐户。
某些文件仍然在使用,因此不能被删除(如 在Internet Explorer中当前打开的。
你可能想研究C# - How to Delete temporary internet files响应。请注意有关可能具有的意见“杀IE”。
没有工作的链接:/我试过这个代码相同的错误。 – DialUp
我看到这里的问题是,你执行删除操作需要Administrator
特权。
你可以做的就是尽量右键>以管理员身份运行应用程序,然后执行操作。
如果你想提示用户升高你的应用程序,你可以这样做。
你得到这个错误,因为该文件或文件夹,尝试删除未正确此访问。
由于在执行删除操作时当前正在使用某个文件,因此可能会发生这种情况。
由于您从Windows操作系统临时使用的文件夹中删除文件,所以使用的文件可能性更大。
此外,DeleteInternetFiles方法中的参数称为字符串internetDirectory,某些原因无法发布它。 – DialUp
第二个catch块只捕获原始try中代码中的UnauthorizedAccessException,而不是从第一个catch块中获取。 – BurningLights