无法递归删除用户文件夹中的文件夹。 mscorlib.dll中发生'System.UnauthorizedAccessException'

时间:2014-08-19 20:55:10

标签: c# .net windows winforms file

我试图删除包含用户"用户名"的每个文件夹。它的内容位于C:\ Users \ User中,如下所示:

    foreach (var subdir in directory.GetDirectories().Where(subdir => subdir.Name.ToLower().Contains(Environment.UserName))) {
        try {
            Directory.Delete(subdir.FullName, true);
        } catch (Exception exception) {
            Console.Write("Deleting " + subdir.FullName + " caused exception: \n" + exception);
        }
    }

当我尝试运行Windows窗体二进制文件时,我得到了一个' System.UnauthorizedAccessException'在mscorlib.dll遇到前几个文件时发生错误。这就是事情,我作为管理员运行它,我可以在没有问题的情况下删除资源管理器中的那些文件(甚至是UAC提示),并且没有锁定/使用这些文件的进程。

发生了什么?

2 个答案:

答案 0 :(得分:4)

交换此电话的目录。删除

//Directory.Delete alternative
public void DeleteDirectory(string targetDir)
{
    File.SetAttributes(targetDir, FileAttributes.Normal);

    string[] files = Directory.GetFiles(targetDir);
    string[] dirs = Directory.GetDirectories(targetDir);

    foreach (string file in files)
    {
        File.SetAttributes(file, FileAttributes.Normal);
        File.Delete(file);
    }

    foreach (string dir in dirs)
    {
        DeleteDirectory(dir);
    }

    Directory.Delete(targetDir, false);
}

答案 1 :(得分:1)

实际上还有另一个原因:在目录中你可能有一个名为“Thumb.db”的隐藏的恼人文件,其中包含所有文件的缩略图信息。有时,除非您通过任务管理器终止explorer.exe或关闭计算机,否则此文件不会关闭,并导致“不可删除”文件夹。

要摆脱这件令人讨厌的作品,请按照here:)

的说明操作