尝试删除某个目录时,将拒绝访问该路径

时间:2015-12-31 16:56:27

标签: c# windows directory

代码

这是我正在调试的一些C#代码的简化伪代码版本。

// 1) Lots of files and directories are copied

// 2) Some unnecessary files are deleted

// 3) Try to delete an unnecessary directory
string stubbornFolder = @"C:\...\Stubborn"; // This folder was created during step 1 above.
Directory.Delete(stubbornFolder);

问题

当它命中Directory.Delete时,抛出以下异常。

System.IO.IOException: Access to the path 'C:\...\Stubborn' is denied.

备注

  • 删除目录" C:... \ test"也按预期工作。 test和Stubborn似乎都具有相同的安全设置。两个目录都是空的。

  • 如果我手动删除然后使用Windows资源管理器重新创建Stubborn(并使用调试器跳过复​​制代码),删除将按预期工作。

    • 即使在应用程序运行时完成手动删除也可以正常工作。
  • 查看this question中建议的访问控制类型似乎表明所有规则都设置为允许。

  • 不必要的文件删除按预期工作。

  • 以管理员而不是管理员身份运行可执行文件并没有任何区别。

  • 似乎没有任何使用Stubborn作为工作目录的应用程序。

帮助!

关于可能导致此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

可能存在某种属性阻止您删除该文件夹。您可以尝试首先将属性设置为正常:

System.IO.DirectoryInfo directory = new System.IO.DirectoryInfo(@"C:\...\Stubborn");
setAttributesNormal(directory);



void setAttributesNormal(System.IO.DirectoryInfo directory){
    foreach (string subDirectoryPath in directory.GetDirectories()){
        var directoryInfo = new DirectoryInfo(subDirectoryPath);
        foreach (string filePath in directoryInfo.GetFiles()) {
            var file = new FileInfo(filePath);
            file.Attributes = FileAttributes.Normal;
        }
    }
}