Ich nehme mal an, dass Dir Rekursion ein Begriff ist. Also komme ich gleich zu den anderen Punkten.
Mit
Directory.GetFiles kannst Du die Dateien eines Verzeichnisses (eine Überladung kann auch Unterverzeichnisse durchsuchen) bekommen. Der Rückgabewert ist ein String-Array.
Durch dieses String-Array läufst Du dann in einer foreach-Schleife durch.
In dieser Schleife prüfst Du dann die Attribute der Dateien. Dafür gibt
es File.GetAttributes. Solltest eine Datei ein Attribut haben, dass das Löschen verhindert (z.B. ReadOnly) kannst Du die Attribute mit
File.SetAttributes neu setzen. Die Attribute findest Du unter der FileAttributes-Enumeration.
Wenn Du bei GetFiles die Überladung mit den SearchOptions verwendest, musst Du nichtmal rekursiv programmieren.
Ich finde das nicht sonderlich kompliziert. Aber vielleicht ist mein Programmierergehir auch schon zu verkorkst.