So, here’s a small gotcha I ran into while using this API not too long ago.
System.IO.Directory.Delete has some interesting nuances (what happens with mounts?) – it’s definitely worth reading. Something that is not currently in the documentation is the behavior when files or directories are marked read-only within. In short – the operation stops when the file or directory is encountered, and an exception is thrown. Interestingly, the exception may be UnauthorizedAccessException or IOException, depending on whether it is a file or directory that had the attribute.
Removing the attribute is a straightforward task with File.SetAttributes:
File attributes = File.GetAttributes(path);
if ((attributes & FileAttributes.ReadOnly) != 0)
File.SetAttributes(path, attributes & ~FileAttributes.ReadOnly);