Чтобы продолжить решение Виталия Улантикова, я дополнил его методом переименования / перемещения папок:

ужно удалить каталог, который содержит файлы только для чтения. Какой подход лучше:

С помощьюDirectoryInfo.Delete(), или же,

ManagementObject.InvokeMethod("Delete")?

С участиемDirectoryInfo.Delete()Я должен вручную отключить атрибут только для чтения для каждого файла, ноManagementObject.InvokeMethod("Delete") Похоже, не нужно. Есть ли ситуации, когда одно предпочтительнее другого?

Пример кода (test.txt только для чтения).

Первый способ:
DirectoryInfo dir = new DirectoryInfo(@"C:\Users\David\Desktop\");
dir.CreateSubdirectory("Test");

DirectoryInfo test = new DirectoryInfo(@"C:\Users\David\Desktop\Test\");
File.Copy(@"C:\Users\David\Desktop\test.txt", @"C:\Users\David\Desktop\Test\test.txt");
File.SetAttributes(@"C:\Users\David\Desktop\Test\test.txt", FileAttributes.Archive);
test.Delete(true);
Второй способ:
DirectoryInfo dir = new DirectoryInfo(@"C:\Users\David\Desktop\");
dir.CreateSubdirectory("Test");

DirectoryInfo test = new DirectoryInfo(@"C:\Users\David\Desktop\Test\");
File.Copy(@"C:\Users\David\Desktop\test.txt", @"C:\Users\David\Desktop\Test\test.txt");

string folder = @"C:\Users\David\Desktop\Test";
string dirObject = "Win32_Directory.Name='" + folder + "'";
using (ManagementObject managementObject = new ManagementObject(dirObject))
{
    managementObject.Get();
    ManagementBaseObject outParams = managementObject.InvokeMethod("Delete", null,
    null);
    // ReturnValue should be 0, else failure
    if (Convert.ToInt32(outParams.Properties["ReturnValue"].Value) != 0)
    {
    }
}

Ответы на вопрос(11)

Ваш ответ на вопрос