使用'System.IO.Directory.Delete'时,"拒绝访问系统路径"

Jam*_*s T 8 .net

我正在使用System.IO.Directory.Delete并尝试删除系统文件夹,例如"我的音乐","我的视频"等,但是我收到的错误类似于"访问系统路径'C:\ users\jbloggs\Saved Games'被拒绝".然而,我可以通过资源管理器删除这些文件夹没有任何问题,我有这些文件夹的完全权限.关于我可以尝试的任何建议?

我的代码:

public static void ClearAttributes(string currentDir)
{
    if (Directory.Exists(currentDir))
    {
        string[] subDirs = Directory.GetDirectories(currentDir);
        foreach (string dir in subDirs)
            ClearAttributes(dir);
        string[] files = files = Directory.GetFiles(currentDir);
        foreach (string file in files)
            File.SetAttributes(file, FileAttributes.Normal);
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

try
{
    ClearAttributes(FolderPath);
    System.IO.Directory.Delete("C:\\users\\jbloggs\\Saved Games", true);
}
catch (IOException ex)
{
    MessageBox.Show(ex.Message);
}
Run Code Online (Sandbox Code Playgroud)

Han*_*ant 14

是的,该文件夹具有"只读"属性集.这可行:

var dir = new DirectoryInfo(@"c:\temp\test");
dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly;
dir.Delete();
Run Code Online (Sandbox Code Playgroud)

删除内容时,应始终注意文件属性.务必远离系统或ReparsePoint.并仔细阅读ReadOnly和Hidden.