tags:

views:

453

answers:

1

I'm using

System.IO.Directory.Delete and trying to delete system folders such as 'My Music', 'My Videos' etc, but I get errors similar to "Access to the system path 'C:\users\jbloggs\Saved Games' is denied". I can however delete these folders via Explorer without any problems, I have full permissions to these folders. Any suggestions on what I can try?

My code:

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

    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);
        }

    }
+1  A: 

Yes, that folder has the "read only" attribute set. This would work:

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

You should always pay attention to the file attributes when you delete stuff. Be sure to stay clear from anything that is System or ReparsePoint. And careful with ReadOnly and Hidden.

Hans Passant
Awesome, many thanks nobugz!
James T