Я использую System.IO.Directory.Delete
и пытаюсь удалить системные папки, такие как «Моя музыка», «Мои видео» и т. Д., Но я получаю ошибки, похожие на «Доступ к системному пути» C: \ users \ jbloggs \ Saved Games 'denied ". Однако я могу удалить эти папки через Explorer без каких-либо проблем, у меня есть полные разрешения для этих папок. Любые предложения о том, что я могу попробовать?«Доступ к системному пути запрещен» при использовании «System.IO.Directory.Delete»
Мой код:
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);
}
}
Использование:
try
{
ClearAttributes(FolderPath);
System.IO.Directory.Delete("C:\\users\\jbloggs\\Saved Games", true);
}
catch (IOException ex)
{
MessageBox.Show(ex.Message);
}
Соответствующие совпадения google не соответствуют точной строке «Доступ к системному пути». Является ли это точной формулировкой сообщения об ошибке? –
Попробуйте указать строку пути. Используйте @ "C: \ users \ jbloggs \ Saved Games". Кроме того, show 'ex.ToString()'. Наконец, это связано с .NET, а не с языком программирования C#. –
Атрибуты не всегда являются проблемой. Другая причина заключается в том, что какое-то приложение имеет этот каталог или что-то под ним открыто. В моем случае приложение было Windows Explorer! У него был заблокирован соответствующий каталог, хотя «текущая» папка была за пределами той, которую я пытался переименовать. Мое приложение не могло переименовать каталог, пока я не закрыл Explorer. –