Как я могу принудительно удалить заблокированные файлы в C / C ++? - PullRequest
6 голосов
/ 18 октября 2008

Как программно принудительно удалить файлы, заблокированные операционной системой или любой другой программой с C / C ++? Функциональность должна быть аналогична программному обеспечению "Unlocker" на http://ccollomb.free.fr/unlocker.

Ответы [ 3 ]

5 голосов
/ 18 октября 2008

Смотри это образец.

4 голосов
/ 18 октября 2008

Если вы используете Win32, официальный способ сделать это - пометить его как удаляемый при перезагрузке и попросить пользователя перезагрузиться. Чтобы пометить файл для удаления при перезагрузке, используйте MoveFileEx с флагом MOVEFILE_DELAY_UNTIL_REBOOT (передайте NULL в качестве места назначения).

1 голос
/ 19 октября 2008

Это действительно зависит от базовой файловой системы.

Например, в Linux ext3 поддерживает атрибуты файлов, которые не являются частью стандартной парадигмы чтения / записи / выполнения / пользователя / группы / мира в Unix.

Здесь есть краткое описание доступных атрибутов:

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

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