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

Amo*_*ous 1 .net c# windows file winforms

我试图删除包含用户“用户名”及其内容位于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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试运行Windows Form二进制文件时,命中前几个文件时,mscorlib.dll错误中出现了'System.UnauthorizedAccessException'错误。事情就是这样,我以管理员身份运行它,我可以在资源管理器中删除这些文件而不会出现问题(甚至没有UAC提示),并且没有进程锁定/使用这些文件。

这是怎么回事?

ajg*_*ajg 5

交换此调用的directory.delete

//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);
}
Run Code Online (Sandbox Code Playgroud)