Доступ к пути запрещен - PullRequest
0 голосов
/ 25 ноября 2011

Я делаю проект из своей школы и пытаюсь удалить файл из Windows XP.

Однако, я сталкиваюсь с этой ошибкой, даже после того, как я установил атрибут файла.

Доступ к пути запрещен "

Файл находится в C:\Document and Settings\%user%\Local Settings\Temp.

Как это можно решить?

if(File.Exists(filePath))
{                   
  FileSecurity sec = File.GetAccessControl(filePath);
  sec.AddAccessRule(new FileSystemAccessRule(Environment.UserName,
                    FileSystemRights.FullControl, AccessControlType.Allow));
  File.SetAccessControl(filePath, sec); 
  File.SetAttributes(filePath, FileAttributes.Normal);
  File.Delete(filePath);
}

Ответы [ 4 ]

2 голосов
/ 25 ноября 2011

FileSecurity устанавливает разрешения для самого файла.Это все здорово, но это не значит, что у вас есть разрешение на его удаление.Попробуйте запустить приложение от имени администратора и посмотрите, будет ли это иметь значение.

0 голосов
/ 25 ноября 2011

Пока кодовый блок в порядке.

Однако имейте в виду следующие вещи:

а. В случае Windows XP, когда вы вошли в систему - убедитесь, что пользователь входит в группу администраторов, и у него будет доступ с правами администратора, поэтому любое приложение, запущенное пользователем, будет иметь права администратора.

б. В случае других обновленных Windows, таких как Vista, Windows 7, попробуйте запустить приложение от имени администратора (щелкните правой кнопкой мыши на приложении и нажмите «Запуск от имени администратора» во всплывающем окне при проверке во время разработки - запустите вашу IDE с правами администратора). ).

Надеюсь, это будет полезно.

0 голосов
/ 25 ноября 2011

Проверьте, есть ли у вас «admin» или соответствующее разрешение на удаление файлов.

Если у вас есть права администратора, проверьте, есть ли у упомянутого вами файла другие "права". Например: несколько файлов MS не могут быть удалены.

Проверьте, правильно ли вы указали имя файла.

Если вы проверили все это, то этот файл либо вы открыли, либо в своем коде вы не закрыли его для удаления.

Даже если приведенное выше решение не работает, этот файл либо поврежден, либо какой-то другой пользователь или вы все еще используете этот файл, который не закрыт.

0 голосов
/ 25 ноября 2011

Это означает, что файл используется другой программой.
Вы должны закрыть файл (или всю программу), прежде чем сможете его удалить.

Если ваша программа использует файл, обязательно закройте (не пересекайте) потоки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...