
У меня есть программа (старая версия Delphi), которой нужно создавать временный файл при каждом открытии. Проблема в том, что она может создать этот файл, но не может его перезаписать, поэтому всякий раз, когда я пытаюсь открыть ее, мне сначала приходится перемещать файл куда-то еще.
Файл создается во временной папке (userfolder\AppData\Local\Temp). Я могу переместить его куда угодно, могу переименовать, но не могу удалить.
Поэтому я создал отдельную папку, куда я могу переместить временный файл. Я получаю одну копию каждый раз, когда хочу открыть программу, поэтому я переименовываю эти копии. Но их теперь слишком много, и я хотел бы от них избавиться.
Когда я пытаюсь удалить один из них, я получаю следующее сообщение:
Действие не может быть завершено, так как файл открыт в системе
Самое смешное, что даже если я перезагружаю систему, а затем захожу в отдельную папку, созданную для хранения этих файлов, и пытаюсь удалить один из них, я все равно получаю это сообщение.
Я пытался:
- Назначить себя владельцем файлов (изначально они принадлежат Системе);
- Назначение разрешений другим учетным записям пользователей, включая «Все», и обеспечение того, чтобы у всех из них были разрешения на удаление файлов;
- Удаление всех атрибутов файла;
- Перезагрузка, как уже упоминалось выше. Я даже делал это несколько раз;
- Изменение не только имен файлов, но и расширений;
- Unlocker (программа, которая обещает решить подобные проблемы, но мне она не помогла);
- Прохожу через командную строку. Там просто написано
access denied
.
Что еще я могу попробовать? Как мне запретить процессу System открывать эти файлы, чтобы я мог избавиться от них?
решение1
Хороший список идей. Другие более экстремальные вещи, которые можно попробовать:
- Загрузитесь в безопасном режиме
- Смонтировать диск на другой машине
Вы можете использоватьProcessExplorerчтобы увидеть, какой процесс (если таковой имеется) имеет доступ к файлу:
- Ctrl+L (показать нижнюю панель)
- В нижней панели нажмите Ctrl+F для имени файла.