Я пытаюсь удалить исполняемый файл, но это не удается с ошибкой Доступ запрещен даже при добавлении /F
, чтобы заставить его как del/F system.exe
. Я использую командную строку с повышенными привилегиями.
Попытка удалить файл через проводник Windows дает следующее:
Я вошел в свойства безопасности исполняемого файла. Выделены странные записи о разрешениях, которые могут мешать мне удалить этот файл:
Изначально это не позволяло мне удалять записи; опция была неактивна. Я выполнил takeown/F C: ProgramData 994146 system.exe
, удалил записи, добавил те, которые давали мне полные разрешения, и закрыл диалоговое окно. Ошибка не исчезла. Когда я повторно открыл дополнительные параметры безопасности, записи вернулись.
Родительская папка system.exe, 994146, полностью невидима в ProgramData. У меня есть «показать скрытые файлы» в ProgramData. Мне пришлось вручную ввести путь в адресной строке проводника Windows. Я также не уверен, как редактировать свойства 994146, так как я не могу выбрать его в иерархии файлов.
Заморозить плохие процессы:
- Загрузите и запустите Process Explorer (из Microsoft) от имени администратора
- в Параметры > VirusTotal.com menu enable Проверьте VirusTotal.com и примите лицензионное соглашение.
- Появится новый столбец с названием VirusTotal с номером например
0/57
. Первое число указывает, сколько сканеров вирусов считают процесс зараженным. Второе число указывает, сколько сканировал файл.0/57
указывает на чистый процесс, а19/57
указывает на то, что 19 сканеров считают, что процесс плохой. - Для любых процессов, отмеченных как зараженные, щелкните правой кнопкой мыши и Приостановить (не убивать)
- После того, как все подозрительные процессы будут приостановлено, уничтожьте их по одному.
- Если какие-либо новые зараженные процессы появятся снова, приостановите их и не убивайте
- Измените права доступа к файлам для нежелательных исполняемый файл, чтобы восстановить полный доступ, затем удалите его.
- После того, как вы удалили файл, вам нужно немедленно перейти к сканированию вашего компьютера на наличие вредоносных программ.
Если это не сработает, потушите огонь:
- Загрузите и запустите Process Monitor (также от Microsoft ) и запустите от имени администратора.
- В меню Фильтр нажмите
- Создайте условие фильтра для соответствия вашему файлу следующим образом:
- Нажмите Добавить затем
- Измените разрешения для своего файла.
- Просмотрите выход. Вы увидите этот проводник
. exe
обращается к файлу (то есть вы меняете права доступа). Найдите любые другие процессы, которые касаются файла … скорее всего, последний процесс, который это сделал. Скорее всего, это ваш вредоносный процесс. - Используйте Process Explorer, чтобы приостановить этот процесс (значение
PID
, отображаемое Process Monitor, также отображается Process Explorer ) - Попробуйте снова изменить разрешения/удалить файл
Это мой «chown.bat» (пользователи unix будут смеяться надо мной, используя это имя). Я собрал это из разных решений … Каждый раз, когда одно не работает, я добавляю новые вещи. Материал SetACL, который я обнаружил только в 2014 или 2015 году. Меня это ни разу не подводило:
для/r% fn в (*. *) SetACL -on "% fn" - ot file -actn clear -clr dacl, sacl takeown/F */R/DY icacls *. */T/C/grant YOURUSERACCOUNTNAMEHERE: (D, WDAC) icacls. /T/C/grant administrators: F Система: F все: F
SetACL — это сторонняя утилита, которая должна быть у вас на пути.
3
Удаление файла, но доступ запрещен
У меня есть приложение mvc4 с entity framework.
Я хочу удалить файл, но каждый раз он говорит:
Исключение типа ‘System.UnauthorizedAccessException’ произошло в mscorlib.dll, но не было обработано в пользовательском коде
Дополнительная информация: Доступ к пути ‘G: Mijn Documents My Web Sites Lolabikes — Copy C # ContosoUniversity Images ‘ запрещен.
этой строкой : System.IO.File.Delete (path);
Это метод:
public ActionResult DeleteFiles (int id) {// var fileName = Путь.GetFileName (id.FileName); var DirSeparator = Path.DirectorySeparatorChar; var path = Server.MapPath ("~ \ Images" + DirSeparator);//+ fileName.Replace ('+', '_'))); var file = db.lolabikerPhotos.Find (id); System.IO.File.Delete (путь); db.SaveChanges (); return Redirect (Url.Action ("Edit", "Account") + "# tabs-3"); }
Я просто запускаю приложение в Visual Studio, например: http://localhost: 41787/Account/Edit? UserId = hallo
Я уже сделал следующее:
Полный доступ к карте, я добавил сетевой сервис на карту с полным контролем. Но вроде ничего не работает. Я использую Windows 7. И я запускаю Visual Studio 2013 от имени администратора
Я также вижу это:
ASP.NET не авторизован для доступа запрашиваемый ресурс. Рассмотрите возможность предоставления прав доступа к ресурсу удостоверению запроса ASP.NET. ASP.NET имеет базовое удостоверение процесса (обычно {MACHINE} ASPNET в IIS 5 или Network Service в IIS 6 и IIS 7, а также настроенное удостоверение пула приложений в IIS 7.5), которое используется, если приложение не олицетворяет. Если приложение олицетворяет себя через , удостоверением будет анонимный пользователь (обычно IUSR_MACHINENAME) или аутентифицированный пользователь запроса.
Здесь вы можете увидеть доступ:
Я пробую что-то вроде этого:
-> web>
Я добавил это:
Хорошо, я могу запустить приложение, но все равно выдает ошибку:
Доступ к пути ' G: Mijn Documents My Web Sites Lolabikes - Copy C # ContosoUniversity Images 'запрещен ред. Описание: Необработанное исключение произошло во время выполнения текущего веб-запроса. Просмотрите трассировку стека, чтобы получить дополнительную информацию об ошибке и ее происхождении в коде. Сведения об исключении: System.UnauthorizedAccessException: доступ к пути 'G: Mijn Documents My Web Sites Lolabikes - Copy C # ContosoUniversity Images ' запрещен. ASP.NET не авторизован для доступа к запрошенному ресурсу. Рассмотрите возможность предоставления прав доступа к ресурсу удостоверению запроса ASP.NET. ASP.NET имеет базовое удостоверение процесса (обычно {MACHINE} ASPNET в IIS 5 или сетевая служба в IIS 6 и IIS 7, а также настроенное удостоверение пула приложений в IIS 7.5), которое используется, если приложение не олицетворяет. Если приложение олицетворяет себя через , удостоверением будет анонимный пользователь (обычно IUSR_MACHINENAME) или аутентифицированный пользователь запроса. Чтобы предоставить ASP.NET доступ к файлу, щелкните файл правой кнопкой мыши в проводнике, выберите «Свойства» и выберите вкладку «Безопасность». Нажмите «Добавить», чтобы добавить соответствующего пользователя или группу. Выделите учетную запись ASP.NET и установите флажки для желаемого доступа. Ошибка источника: строка 489: var path = Server.MapPath ("~ \ Images" + DirSeparator);//+ fileName.Replace ('+', '_'))); Строка 490: var file = db.lolabikerPhotos.Find (id); Строка 491: System.IO.File.Delete (путь); Строка 492: db.SaveChanges (); Строка 493:
полное разрешение:
Вкладка «Дополнительно»:
Вкладка измененных разрешений:
Я отредактировал свой метод действия следующим образом:
public ActionResult DeleteFiles (int id) {var fileName = Path.GetFileName (@ "\ Koala.jpg"); var DirSeparator = Path.DirectorySeparatorChar; var path = Server.MapPath (@ "\ Images" + DirSeparator + fileName.Replace ('+', '_')); var file = db .lolabikerPhotos.Find (id); LolaBikePhoto lola = db.lolabikerPhotos.Find (id); db.lolabikerPhotos.Remove (lola); System.IO.File.Delete (путь); db.SaveChanges (); return Redirect (Url .Action ("Edit", "Account") + "# tabs-3");}
И теперь оно работает!
У меня тоже была проблема, поэтому я наткнулся на этот пост. Я добавил следующую строку кода до и после копирования/удаления.
Delete
File.SetAttributes (файл, FileAttributes.Normal); File.Delete (файл);
Копировать
File.Copy (file, dest, true); File.SetAttributes (dest, FileAttributes.Normal);
Основываясь на ответе — Fo Мне пришлось установить для папки и файлов внутри нее обычные атрибуты.
DirectoryInfo directory = new DirectoryInfo ("/path/ в/файл "); directory.Attributes = FileAttributes.Normal; foreach (файл FileInfo в каталоге.GetFiles ()) {file.Attributes = FileAttributes.Normal; }